欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

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

发布时间:2024/3/12 59 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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实现)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。