日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS造轮子-数字金额每隔3位用逗号隔开(Swift实现)

發布時間:2024/3/12 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS造轮子-数字金额每隔3位用逗号隔开(Swift实现) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概要

      • 背景概述
      • Swift 代碼實現
      • 圖示代碼執行原理
      • 算法復雜度分析

背景概述

金融類App不可避免的需要展示金額信息,如¥12345678元,但當金額數值較大時,將一整串的金額顯示在用戶面前顯然不夠友好,所以業內通用做法是每隔3位添加一逗號,即顯示成¥12,45,678元,極大地提升了用戶體驗。

Swift 代碼實現

/*** 將字符串每隔數位用分割符隔開** @param source 目標字符串* @param gap 相隔位數,默認為3* @param gap 分割符,默認為逗號* @return 用指定分隔符每隔指定位數隔開的字符串**/ func showInComma(source: String, gap: Int=3, seperator: Character=",") -> String {var temp = source/* 獲取目標字符串的長度 */let count = temp.count/* 計算需要插入的【分割符】數 */let sepNum = count / gap/* 若計算得出的【分割符】數小于1,則無需插入 */guard sepNum >= 1 else {return temp}/* 插入【分割符】 */for i in 1...sepNum {/* 計算【分割符】插入的位置 */let index = count - gap * i/* 若計算得出的【分隔符】的位置等于0,則說明目標字符串的長度為【分割位】的整數倍,如將【123456】分割成【123,456】,此時如果再插入【分割符】,則會變成【,123,456】 */guard index != 0 else {break}/* 執行插入【分割符】 */temp.insert(seperator, at: temp.index(temp.startIndex, offsetBy: index))}return temp }//測試調用 print(showInComma(source: "1234567")) //輸出1,234,567 print(showInComma(source: "1234567", gap: 4, seperator: "#")) //輸出123#4567

圖示代碼執行原理

算法復雜度分析

  • 本案通過逗號每隔3位分隔字符串,換一個角度考慮,其實就是從字符串尾部每隔3位插入一個逗號,自然的,我們可以借鑒直接插入排序的思想。
  • 代碼分析可知,上述方法主要耗時點在于插入分割符時其他元素的移動,因此時間復雜度為0(n)。

總結

以上是生活随笔為你收集整理的iOS造轮子-数字金额每隔3位用逗号隔开(Swift实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。