Swift:正则表达式⽅法(根据正则表达式从特定字符串中提取
数据)
要求:从"raw=281804 mV level=100.00%"字符串中提取281804和100.00
1.输⼊:
let pattern = "raw=(\\d+) mV level=(\\d+(?:\\.\\d+)?)%"
let batteryLevel = "raw=281804 mV level=100.00%"
2.实现⽅法:
/**
正则表达式获取⽬的值
- parameter pattern: ⼀个字符串类型的正则表达式
- parameter str: 需要⽐较判断的对象
正则表达式提取中文-
imports: 这⾥⼦串的获取先转话为NSString的[以后处理结果含NS的还是可以转换为NS前缀的⽅便]
- returns: 返回⽬的字符串结果值数组(⽬前将String转换为NSString获得⼦串⽅法较为容易)
- warning: 注意匹配到结果的话就会返回true,没有匹配到结果就会返回false
*/
func regexGetSub(pattern:String, str:String) -> [String] {
var subStr = [String]()
let regex = try! NSRegularExpression(pattern: pattern, options:[])
let matches = regex.matches(in: str, options: [], range: NSRange(,in: str))
//解析出⼦串
for match in matches {
// subStr.append(String(str[Range(match.range(at: 1), in: str)!]))
/
/ subStr.append(String(str[Range(match.range(at: 2), in: str)!]))
subStr.append(contentsOf: [String(str[Range(match.range(at: 1), in: str)!]),String(str[Range(match.range(at: 2), in: str)!])])
}
return subStr
}
3.输出:
var batteryParams = [String]()
batteryParams = regexGetSub(pattern: pattern, str: batteryLevel)
print(batteryParams)
打印信息:
["281804", "100.00"]
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论