这是旧函数,它不适用于Xcode 7 Beta 5:
func onlyDoubleUse(textField: AnyObject){
let field = textField.object! as! UITextField
let subStringArray: [String]?
do {
subStringArray = try field.text!.stringsMatchingRegularExpression(expression: "[0-9]{1,}.[0-9]{1,}|[0-9]{1,}")
} catch _ {
subStringArray = nil
}
if(subStringArray?[0] != nil){
field.text = subStringArray![0]
}else{
field.text = ""
}
}
Apple在Swift 2中删除了stringsMatchingRegularExpression
。
如何解决?
答案 0 :(得分:0)
这是一个递归方法,通过扩展名添加到String
:
extension String {
func stringsMatchingRegularExpression(expression: String) -> [String] {
if let range = self.rangeOfString(expression, options: NSStringCompareOptions.RegularExpressionSearch, range: nil, locale: nil) {
return [self[range]] + self[range.endIndex..<self.endIndex].stringsMatchingRegularExpression(expression)
}
return []
}
// if you have a large string you should use this method
func stringsMatchingRegularExpressionLarge(expression: String) -> [String] {
var result = [String]()
var currentRange = self.startIndex..<self.endIndex
// use this line in Swift 2.x instead
var currentRange = self.characters.indices
while let range = self.rangeOfString(expression, options: NSStringCompareOptions.RegularExpressionSearch, range: currentRange, locale: nil) {
result.append(self[range])
currentRange.startIndex = range.endIndex
}
return result
}
}