如何在Swift中每三个字符的“ endIndex”中添加一个字符?

时间:2019-12-13 16:50:49

标签: swift

我有一个像下面这样的字符串

"12345678"

我要添加一个分隔符“,”

我希望输出为:

"12,345,678"

不喜欢成为:

"123,345,678",(因为这是从头算起的)

还是不喜欢成为:

",123"

从Swift到底如何做到这一点?

1 个答案:

答案 0 :(得分:0)

按照this question的答案中所述使用NSNumberFormatter可能会更好。

但是在某些情况下可能不起作用(例如String太长,数字使用非标准数字)。

您可以使用一个简单的递归函数来执行此操作,该函数会反复剔除最后3个字符,并将其与已递归传递给同一函数的字符串的前半部分和,进行分隔:

func commafy(_ str: String) -> String {
    guard str.count > 3 else { return  str }
    return commafy(String(str.dropLast(3))) + "," + str.suffix(3)
}

示例

commafy("123")       // "123"
commafy("1234")      // "1,234"
commafy("12345")     // "12,345"