概要

  • 背景概述
  • 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实现)相关推荐

  1. js数字类型每隔三位加逗号(最简单方法)

    直接正则就行了 var a = 123456789 var b = a.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); console.log(b ...

  2. 数字格式化为金额格式 (3位一个逗号隔开)

    var fomatNum = function (num) {// 将数的小数部分和整数部分分开操作 将整数部分进行三位一逗号的操作var arr = num.toString().split('.' ...

  3. Java金额每隔三位加上一个逗号

    JAVA实现给数字加逗号: 说明:将float类型的数据转换成以3位逗号隔开的字符串,并且保留两位有效数字 public static String formatTosepara(float data ...

  4. 金额数字3位隔开php,PHP实现人民币数字格式化,每三位加逗号

    function num_format($num){ if(!is_numeric($num)){ return false; } $rvalue=''; $num = explode('.',$nu ...

  5. java 金额千位用逗号隔开_金额格式化 处理千分位 金额逗号,隔开

    方法1. //处理千分位使用 var dealThousands = function(value) { if (value === 0) { return parseFloat(value).toF ...

  6. 数字三位分节法(即整数部分从右向左,每隔三位用逗号分开)python实现

    题目: 将输入的一个数字先保留两位小数,整数部分用三位分节法表示. 样例: 输入:1234567.89 输出:1,234,567.89 def format_number(amount):'''将一个 ...

  7. 金额的每三位一个逗号的正则解法

    在商城页面中我们经常会遇到需要每三位用逗号表示的时候,这时,用原生的js解决不够方便,此时可以使用正则表达式来进行快速替换 function transform (num){return num.to ...

  8. velocity 将字符串切割按每隔3位加逗号,map集合遍历,字符串拼接,

    ###分割字符串的算法demo #macro(addcomma)#set($newStr="")#set($first1 ="123456789")#set($ ...

  9. JavaScript jq 三位分节法 input输入数字时每3位使用逗号隔开

    可只用于整数与小数. 效果演示: html 部分: <body><input type="text" id="lname"/> < ...

最新文章

  1. LAMP的安装及Xcache的配置
  2. Java 过滤特殊字符的 正则表达式
  3. Binder相关面试总结(三):Binder机制是如何跨进程的
  4. Hybird混合开发APP初学体验
  5. 【Xamarin 在Mac OS 上的部署安装环境】
  6. FC8下安装mplayer
  7. 为何不采用“两次握手”建立连接?
  8. 造轮子是什么意思_程序员发文质疑阿里天启为kpi项目,重复造轮子,阿里回应:诽谤...
  9. MFC中静态文本控件显示的几种实现方式
  10. 计算机做镜像步骤,如何将当前的操作系统做成镜像?
  11. iOS OpenGL ES2.0教程   Lesson03 旋转
  12. 二分算法:数的三次方根
  13. 为什么手机网速太慢_手机网速慢怎么回事?一分钟就提速两倍的方法
  14. JIAR安装报错IRA Startup Failed
  15. 什么是WIN-PE?
  16. 如何实现报表数据的动态层次钻取(一)
  17. C++历史背景 [C++开发实战](边学边练哈 (#^.^#)~)
  18. C ++程序将给定的英寸转换为等效的码,英尺和英寸
  19. 蒙特卡洛-马尔科夫链(MCMC)初步
  20. 小程序Promise不支持finally解决方案

热门文章

  1. 2 C++标准库(1- IO库、顺序容器和泛型算法)
  2. 技术突破!国产操作系统麒麟加强版发布
  3. 铁匠smith_铁匠的制作:概念和艺术创作
  4. 联发科技获得IPValue Management的专利组合许可
  5. 微信ndows mac下载,Mac版微信又更新,Windows电脑:就这?
  6. GetImageBuffer
  7. 一起来乐邮邮——妙趣小软件:MailMail发布预告
  8. 4g网络设置dns地址_如果你的手机WiFi信号差?输入这串DNS地址,网络瞬间变流畅...
  9. Git概念:什么是分支
  10. 人脑认知计算模型简介(上)