Swift extract regex matches den:
func matchesForRegexInText(regex: String!, text: String!) -> [String] {
let regex = NSRegularExpression(pattern: regex,
options: nil, error: nil)!
let nsString = text as NSString
let results = regex.matchesInString(text,
options: nil, range: NSMakeRange(0, nsString.length))
as! [NSTextCheckingResult]
return map(results) { nsString.substringWithRange($0.range)}
}
Eğer
let str = "I have to buy 3 apples, 7 bananas, 10eggs"
let numbersAsStrings = matchesForRegexInText("\\d+", str) // [String]
let numbersAsInts = numbersAsStrings.map { $0.toInt()! } // [Int]
println(numbersAsInts) // [3, 7, 10]
desen "\d+"
maçlarda bir veya daha fazla ondalık rakam ile kolayca elde edebilirsiniz. İsterseniz aynı Tabii
bir yardımcı işlevi kullanılmadan yapılabileceğini Sebebi ne olursa olsun:
let str = "I have to buy 3 apples, 7 bananas, 10eggs"
let digits = ""
let numbers = split(str, allowEmptySlices: false) { !contains(digits, $0) }
.map { $0.toInt()! }
println(numbers) // [3, 7, 10]
: Normal ifadeler olmadan
let str = "I have to buy 3 apples, 7 bananas, 10eggs"
let regex = NSRegularExpression(pattern: "\\d+", options: nil, error: nil)!
let nsString = str as NSString
let results = regex.matchesInString(str, options: nil, range: NSMakeRange(0, nsString.length))
as! [NSTextCheckingResult]
let numbers = map(results) { nsString.substringWithRange($0.range).toInt()! }
println(numbers) // [3, 7, 10]
Alternatif çözüm
çek için bu yayını Umut işleri dize öğesini int http olarak nasıl dönüştürebilirim: //stackoverflow.com/questions/24115141/swift-converting-string-to-int – Schuere
let a: Int? = str.toInt() bana bir nil değeri verir .. – alphonse