[Swift] 替數字加上","做撇節處理,或是在一定間隔插入對應字元

有些時候我們想將數字加上,顯示在畫面上例如10000會顯示為10,000
這時候我們需要對StringProtocol做extension

extension StringProtocol where Self: RangeReplaceableCollection {
    mutating func insert(separator: Self, every count: Int) {
    //先反轉再走訪的原因是可以避免在插入字串的過程中,長度改變造成 index 不好計算的問題
        for index in indices.reversed() where index != startIndex &&
            distance(from: startIndex, to: index) % count == 0 {
            //另外設定條件是和第一個字的距離只要能夠整除我們給的間格距離就插入指定字元
                insert(contentsOf: separator, at: index)
        }
    }
}

這樣子做的話我們就可以利用這個function來插入我們想要的字元了
例如:

var name = "Tim"
name.insert(separator:"!",count:1)
print("\(name)") // output:  T!i!m

而當我們想要讓數字每n位就加上一個”,”時,我們需要先讓數字轉為字串再進行反轉,才可以從最後面往前算,插入完字元之後再反轉回來就能夠得到我們想要的結果

這裡示範每3位加一個”,”

var number = 123456789
var numberToString = (String(describing: number))
numberToString = String(numberToString.reversed())
numberToString.insert(separator: ",", every: 3)
numberToString = String(numberToString.reversed())
print("結果\(numberToString)") //Output  結果123,456,789