将数字进行分位显示

数字过长时看起来很累需要将数字进行拆分隔开显示:例如 1234567890  显示为1,234,567,890。

实现这个功能有好几种方式,这里例举出3中方式:

第一种方式:使用StringBuffer将数字字符串进行反转:例如将1234567890 反转后变为0987654321

然后根据输入的拆分位数计算出在什么地方插入“,”号。然后将分隔好的字符串反转

/** 
* @param value 
* @param size 分位的大小
* @return
*/
public static String divideNumber(long value, int size) {
StringBuffer sb = new StringBuffer(String.valueOf(value));
sb = sb.reverse();
int length = sb.length();
if (size == 0) {
size = length;
}
int count = 0;
if (length % size == 0) {
count = length / size - 1;
} else {
count = length / size;
}
for (int i = 0; i < count; i++) {
sb = sb.insert((i + 1) * size + i, ",");
}
return sb.reverse().toString();
}

第二种方式:利用正则表达式进行分隔

public static String divideNum(long value, int length) {
String str = String.valueOf(value);
//如果没有指定分位的长度则直接返回
if (length == 0) {
return str;
} else {
//根据指定的分位长度拼接正则表达式
StringBuffer buffer = new StringBuffer();
buffer.append("(?<=\\d)(?=(?:\\d{");
buffer.append(length);
buffer.append("})+$)");
return str.replaceAll(buffer.toString(), ",");
}
}

第三种方式也是利用StringBuffer的insert实现,但是实现更加清晰易懂

public static String divideNumber(long value,int length) {
StringBuffer buffer = new StringBuffer();
int len = buffer.append(value).length();
if (len <= length)
return buffer.toString(); 
//从后往前插入分隔符
while ((len -= length) > 0) { 
buffer.insert(len, ",");
}
return buffer.toString();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值