[英]How do I find the ranges of numbers in an NSString using the current locale?
我有一个NSString,例如“ abcd 12.3 efgh 45,6 ijlk”。 我想使用当前语言环境找到字符串中数字的范围; 所以如果是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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.