gpt4 book ai didi

ios - NSNumberFormatter 分组

转载 作者:行者123 更新时间:2023-11-29 00:57:45 26 4
gpt4 key购买 nike

我想将带有数字的字符串格式化为如下所示:XX XX XX(例如12 34 56)

我使用带有分组分隔符的 NSNumberFormatter:

let formatter = NSNumberFormatter()
formatter.usesGroupingSeparator = true
formatter.groupingSize = 2
formatter.groupingSeparator = " "
if let number = Int(theText.stringByReplacingOccurrencesOfString(" ", withString: "")) {
let numberToFormat = NSNumber(integer:number)
textField.text = formatter.stringFromNumber(numberToFormat)
}

如果您输入数字123456,这将正常工作 - 它的格式为12 34 56

我在 shouldChangeCharactersInRange 方法中使用它,因此它应该在您键入时格式化数字。分组分隔符定义数字按右侧的 groupingSize 值进行分组,因此当您输入 123456 时,文本会发生以下变化:

1
12
1 23
12 34
1 23 45
12 34 45

我想将其格式化如下:

1
12
12 3
12 34
12 34 5
12 34 56

是否可以定义从哪一侧分组分隔符对数字进行分组?

最佳答案

不确定是否必须转换为 Int,在末尾添加一个“0”怎么样?然后去掉最后一个“0”。

let formatter = NSNumberFormatter()
formatter.usesGroupingSeparator = true
formatter.groupingSize = 2
formatter.groupingSeparator = " "

var str = "12345"
if str.characters.count % 2 != 0 {
str += "0"
}
if let number = Int(str.stringByReplacingOccurrencesOfString(" ", withString: "")) {
let numberToFormat = NSNumber(integer:number)
formatter.stringFromNumber(numberToFormat)
}

另一种解决方案:

let string = "12345"

var results = [String]()
for index in 0 ..< string.characters.count-1 {
if index % 2 == 0 {
let range = NSRange(location: index, length: 2)
results.append((string as NSString).substringWithRange(range))
}
}

if string.characters.count % 2 != 0 {
let last = (string as NSString).substringFromIndex(string.characters.count-1)
results.append(last)
}

关于ios - NSNumberFormatter 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37456328/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com