在数字字符串中插入逗号

嘿,我正在尝试对一个字符串执行一个向后的正则表达式搜索,将它分成3位数的组。就我在AS3文档中所见,在reg ex引擎中向后搜索是不可能的

本练习的重点是在数字中插入三重逗号,如下所示:

10000000=>10,000,000

我想这样做:

string.replace(/(\d{3})/g,“,$1”)

但这是不正确的,因为搜索不是从后面进行的,替换$1只适用于第一场比赛

我觉得使用循环执行此任务会更好

更新:

由于AS3不支持前瞻性,这就是我解决它的方法

公共静态函数formatNumber(number:number):字符串
{
var numString:String=number.toString()
变量结果:字符串=“”
while(numString.length>3)
{
变量块:String=numString.substr(-3)
numString=numString.substr(0,numString.length-3)
结果=','+块+结果
}
如果(numString.length>0)
{
结果=数值字符串+结果
}
返回结果
}

如果您的语言支持正向前瞻断言,那么我认为以下正则表达式可以工作:

(\d)(?=(\d{3})+$)

用Java演示:

导入静态org.junit.Assert.assertEquals;
导入org.junit.Test;
公共类承诺测试{
@试验
public void testCommify(){
字符串num0=“1”;
字符串num1=“123456”;
字符串num2=“1234567”;
字符串num3=“12345678”;
字符串num4=“123456789”;
字符串regex=“(\\d)(?=(\\d{3})+$)”;
资产质量(“1”,num0.replaceAll(regex,“$1”);
资产质量(“123456”,num1.replaceAll(regex,“$1”);
资产质量(“1234567”,num2.replaceAll(regex,“$1”);
资产质量(“12345678”,num3.replaceAll(regex,“$1”);
资产质量(“123456789”,num4.replaceAll(regex,“$1”);
}
}

发表评论