当前位置: 首页 > 知识库问答 >
问题:

使用正则表达式替换字符串中的特殊和可选字符

公孙弘图
2023-03-14

我正在学习正则表达式并尝试处理一个小任务。

我将输入量作为字符串,并将其转换为美元格式

输入字符串如下所示

123456.78

输出字符串看起来像这样

$123,456.78

使用正则表达式,我试图避免使用below正则表达式在输入量中出现前导零和逗号。例如,如果输入类似

000,000123456.78
String amount = amount.replaceFirst("^[0,]+(?!$)", "");

我正在用

NumberFormat.getCurrencyInstance(new Locale("en", "US")).format(Float.parseFloat(amount));

除了前导零之外,我无法替换可能存在的任何其他字符。例如,如果输入中已经存在“$”,则转换时会出现错误。我不知道该怎么办。

共有1个答案

董小林
2023-03-14

给定以下字符串。

String str = "000,000,000$12322920292029202920456.78";
  • 首先,去掉不需要的前导字符,包括任何$。
  • 然后使用重复的正则表达式,生成正确的逗号。这也可以通过使用数字的语言环境符号修改','来完成。
  • 然后在结果中添加一个$
str = str.replaceAll("[0,^D$]+","");
System.out.println(str);
String result = "";
while (!str.equals(result)) {
     result = str;
     str = str.replaceAll("(\\d)(\\d\\d\\d)(?!\\d)", "$1,$2");
}
System.out.println("$" + result);

打印

1232292292292292456.78
$1,232,292,292,292,292,456.78
 类似资料:
  • 我有一个HashMap,里面有键和值。我想用字符串中映射的值替换键。 在字符串中,键被写成@keyname或@“keyname”,这些应替换为map.get(“keyname”) 假设我们的地图是这个 所以如果我们处理字符串“Hello world,Iam@key1 years old.”,它将变成“Hello world,Iam 2 years old.”。 我们可以用@“key1”代替@key

  • 我试图为密码字段创建一个验证,它只允许字符和 时有什么区别,以及哪些字符来自

  • 问题内容: 如何在Python中使用正则表达式替换文件中的字符串,因为我想打开一个文件,其中应替换其他字符串的字符串,而我们需要使用Reg表达式(搜索和替换)。有人可以帮助我吗?打开文件并将其与搜索和替换方法一起使用的一些示例 问题答案:

  • 我想使用Gson将字符串转换为Foo对象: 下面是我的正则表达式: 如何使用此正则表达式将所有,.和替换为,,而不更改JSON中的键和值?

  • 问题内容: 我正在尝试使用正则表达式替换字符串中所有出现的英国汽车登记信息。 当字符串与以下正则表达式完全匹配时,以下swift代码可完美地用于a。 结果是 但是,以下操作无效,并且字符串未修改 结果是 谁能给我任何指示? 问题答案: 您需要删除和锚点。 该装置 开始字符串 和手段 结束字符串 (或行,这取决于选项)。这就是第一个示例起作用的原因:在第一个测试字符串中,字符串的开头实际上是您的模式

  • 我需要替换以下字符串中的引号。 最终输出应该是“这是test()ing和test()ing”; i、 e仅当它以“test()开头,以”结尾时才替换。中间的文本保持不变。 这个坏了。 请为同样的问题推荐合适的正则表达式。