ios - 如何使用当前语言环境查找 NSString 中的数字范围?

标签 ios objective-c localization

我有一个像“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/

相关文章:

ios - Xcode 7 找不到有关崩溃的行或方法的详细信息

sql - 根据字符范围选择字符串字段的最佳方法是什么?

ios - 在ios中按顺序下载音频文件

ios - iBeacons 发送和接收 UUID

objective-c - 当 POST 数据具有多行时,Google Cloud Endpoints 会出错

ios - AVAudioPlayer 得到错误的文件持续时间 iOS 10

c# - 字符串在 shamsi date fa-ir 中未被识别为有效的日期时间

ios - 本地化的 UISegmentedControl

ios - 将 Float 数组写入二进制文件并快速读取

ios - 以编程方式将栏按钮添加到导航栏