【发布时间】:2017-07-06 06:26:55
【问题描述】:
如何从句子中提取包含整数、小数和分数的字符串数组? 请在 iOS Swift 中找到下面的输入和输出。
输入:字符串数组["width 32.3", "Length 61 1/4", "height 23 4/5", "measure 5.23"]
输出:[“32.3”,“61 1/4”,“23 4/5”,“5.23”]
【问题讨论】:
如何从句子中提取包含整数、小数和分数的字符串数组? 请在 iOS Swift 中找到下面的输入和输出。
输入:字符串数组["width 32.3", "Length 61 1/4", "height 23 4/5", "measure 5.23"]
输出:[“32.3”,“61 1/4”,“23 4/5”,“5.23”]
【问题讨论】:
正则表达式的另一种方法
let array = ["width 32.3", "Length 61 1/4", "height 23 4/5", "measure 5.23"]
let pattern = "\\d+[\\s.][\\d/]+"
let regex = try! NSRegularExpression(pattern: pattern)
var result = [String]()
for item in array {
if let match = regex.firstMatch(in: item, range: NSRange(location:0, length: item.characters.count)) {
result.append((item as NSString).substring(with: match.range))
}
}
print(result)
模式搜索
【讨论】:
添加这个以支持字符串的正则表达式匹配:
extension String {
mutating func stringByRemovingRegexMatches(pattern: String, replaceWith: String = "") {
do {
let regex = try NSRegularExpression(pattern: pattern, options: NSRegularExpression.Options.caseInsensitive)
let range = NSMakeRange(0, self.characters.count)
self = regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: replaceWith)
} catch {
return
}
}
}
然后:
var str = ["width 32.3", "Length 61 1/4", "height 23 4/5", "measure 5.23"]
var vreturn:[String]=[]
for var s in str {
s.stringByRemovingRegexMatches(pattern:"[a-zA-Z]", replaceWith: "")
vreturn.append(s)
}
print( vreturn)
【讨论】: