我有一个像“abcd 12.3 efgh 45,6 ijlk”这样的 NSString。我想使用当前语言环境查找字符串中数字的范围;所以如果它是 EN 那么我将得到“12.3”、“45”和“6”的范围;但如果是 FR,我会得到“12”、“3”和“45,6”。
最佳答案
使用 NSScanner
(Swift 版本,在 Playground 中一起破解):
var str : NSString = "abcd 12.3 efgh 45,6 ijlk"
let scanner = NSScanner(string: str as String)
scanner.locale = NSLocale(localeIdentifier: "fr_FR")
scanner.charactersToBeSkipped = nil
let characterSet = NSCharacterSet(charactersInString: "-0123456789");
let result = NSMutableArray()
while (!scanner.atEnd) {
var decimal = NSDecimal()
if scanner.scanDecimal(&decimal) {
result.addObject(NSDecimalNumber(decimal: decimal))
} else {
if !scanner.scanUpToCharactersFromSet(characterSet, intoString: nil) {
break
}
}
}
result // [12, 3, 45.6]
重要的一点是使用scanner.locale
设置语言环境。如果将语言环境设置为 en_US
,则会得到 [12.3, 45, 6]
关于ios - 如何使用当前语言环境查找 NSString 中的数字范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31873771/