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实现)相关推荐
- js数字类型每隔三位加逗号(最简单方法)
直接正则就行了 var a = 123456789 var b = a.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); console.log(b ...
- 数字格式化为金额格式 (3位一个逗号隔开)
var fomatNum = function (num) {// 将数的小数部分和整数部分分开操作 将整数部分进行三位一逗号的操作var arr = num.toString().split('.' ...
- Java金额每隔三位加上一个逗号
JAVA实现给数字加逗号: 说明:将float类型的数据转换成以3位逗号隔开的字符串,并且保留两位有效数字 public static String formatTosepara(float data ...
- 金额数字3位隔开php,PHP实现人民币数字格式化,每三位加逗号
function num_format($num){ if(!is_numeric($num)){ return false; } $rvalue=''; $num = explode('.',$nu ...
- java 金额千位用逗号隔开_金额格式化 处理千分位 金额逗号,隔开
方法1. //处理千分位使用 var dealThousands = function(value) { if (value === 0) { return parseFloat(value).toF ...
- 数字三位分节法(即整数部分从右向左,每隔三位用逗号分开)python实现
题目: 将输入的一个数字先保留两位小数,整数部分用三位分节法表示. 样例: 输入:1234567.89 输出:1,234,567.89 def format_number(amount):'''将一个 ...
- 金额的每三位一个逗号的正则解法
在商城页面中我们经常会遇到需要每三位用逗号表示的时候,这时,用原生的js解决不够方便,此时可以使用正则表达式来进行快速替换 function transform (num){return num.to ...
- velocity 将字符串切割按每隔3位加逗号,map集合遍历,字符串拼接,
###分割字符串的算法demo #macro(addcomma)#set($newStr="")#set($first1 ="123456789")#set($ ...
- JavaScript jq 三位分节法 input输入数字时每3位使用逗号隔开
可只用于整数与小数. 效果演示: html 部分: <body><input type="text" id="lname"/> < ...
最新文章
- LAMP的安装及Xcache的配置
- Java 过滤特殊字符的 正则表达式
- Binder相关面试总结(三):Binder机制是如何跨进程的
- Hybird混合开发APP初学体验
- 【Xamarin 在Mac OS 上的部署安装环境】
- FC8下安装mplayer
- 为何不采用“两次握手”建立连接?
- 造轮子是什么意思_程序员发文质疑阿里天启为kpi项目,重复造轮子,阿里回应:诽谤...
- MFC中静态文本控件显示的几种实现方式
- 计算机做镜像步骤,如何将当前的操作系统做成镜像?
- iOS OpenGL ES2.0教程 Lesson03 旋转
- 二分算法:数的三次方根
- 为什么手机网速太慢_手机网速慢怎么回事?一分钟就提速两倍的方法
- JIAR安装报错IRA Startup Failed
- 什么是WIN-PE?
- 如何实现报表数据的动态层次钻取(一)
- C++历史背景 [C++开发实战](边学边练哈 (#^.^#)~)
- C ++程序将给定的英寸转换为等效的码,英尺和英寸
- 蒙特卡洛-马尔科夫链(MCMC)初步
- 小程序Promise不支持finally解决方案
热门文章
- 2 C++标准库(1- IO库、顺序容器和泛型算法)
- 技术突破!国产操作系统麒麟加强版发布
- 铁匠smith_铁匠的制作:概念和艺术创作
- 联发科技获得IPValue Management的专利组合许可
- 微信ndows mac下载,Mac版微信又更新,Windows电脑:就这?
- GetImageBuffer
- 一起来乐邮邮——妙趣小软件:MailMail发布预告
- 4g网络设置dns地址_如果你的手机WiFi信号差?输入这串DNS地址,网络瞬间变流畅...
- Git概念:什么是分支
- 人脑认知计算模型简介(上)