gpt4 book ai didi

regex - 在数字字符串中插入逗号

转载 作者:行者123 更新时间:2023-12-03 08:13:58 24 4
gpt4 key购买 nike

您好,我正在尝试对字符串执行向后正则表达式搜索,以将其分成 3 位一组。据我从 AS3 看到的 documentation ,在 reg ex 引擎中无法向后搜索。

本练习的重点是将三连字符逗号插入一个数字中,如下所示:

10000000 => 10,000,000

我正在考虑这样做:
string.replace(/(\d{3})/g, ",$1")

但这不正确,因为搜索不是从后面发生的,并且替换 $1 仅适用于第一场比赛。

我感觉最好使用循环来执行此任务。

更新:

由于 AS3 不支持前瞻,这就是我解决的方法。
public static function formatNumber(number:Number):String
{
var numString:String = number.toString()
var result:String = ''

while (numString.length > 3)
{
var chunk:String = numString.substr(-3)
numString = numString.substr(0, numString.length - 3)
result = ',' + chunk + result
}

if (numString.length > 0)
{
result = numString + result
}

return result
}

最佳答案

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

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

在 Java 中演示:
import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class CommifyTest {

@Test
public void testCommify() {
String num0 = "1";
String num1 = "123456";
String num2 = "1234567";
String num3 = "12345678";
String num4 = "123456789";

String regex = "(\\d)(?=(\\d{3})+$)";

assertEquals("1", num0.replaceAll(regex, "$1,"));
assertEquals("123,456", num1.replaceAll(regex, "$1,"));
assertEquals("1,234,567", num2.replaceAll(regex, "$1,"));
assertEquals("12,345,678", num3.replaceAll(regex, "$1,"));
assertEquals("123,456,789", num4.replaceAll(regex, "$1,"));
}
}

关于regex - 在数字字符串中插入逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/721304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com