【发布时间】:2020-09-12 15:06:05
【问题描述】:
在操场上使用以下代码,我的测试字符串“23a”与我的测试匹配,但我不确定为什么。
extension String {
var isCurrencyString: Bool {
return currencyString == self
}
var currencyString: String {
let input = self as NSString
guard let decimalSeparator = NSLocale.current.decimalSeparator
, let groupingSeparator = NSLocale.current.groupingSeparator
else { return "" }
let testPattern = "^-?([0-9]{1,3}(\(groupingSeparator)?[0-9])*)(\(decimalSeparator)?[0-9]{0,2})$"
guard let expression = try? NSRegularExpression(pattern: testPattern) else { return "" }
let matches = expression.matches(in: self, options: [], range: NSMakeRange(0, input.length)).map {
input.substring(with: $0.range)
}
return matches.first ?? ""
}
}
let tester = "23a"
print(tester.currencyString) //23a
print(tester.isCurrencyString) //true
【问题讨论】: