繁体   English   中英

如何使用当前语言环境在NSString中找到数字范围?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM