gpt4 book ai didi

java - 在 replaceAll 调用中修改部分正则表达式

转载 作者:行者123 更新时间:2023-11-29 04:16:15 24 4
gpt4 key购买 nike

我正在尝试使用正则表达式格式化字符串,如下所示:

String string = "5.07+12.0+2.14";
string = string.replaceAll("\\.0[^0-9]","");

我认为字符串会变成:

5.07+122.14 //the regex will delete the .0+ next to the 12

我如何创建正则表达式,以便它删除 .0 而不是 + 号?

我更愿意在同一调用中执行所有操作以“replaceAll”

谢谢你的建议

最佳答案

匹配的字符将被替换。因此,您可以使用先行,而不是匹配 末尾的非数字,这将执行所需的检查但不会消耗任何字符。此外,非数字的简写是 \D,它比 [^0-9] 更易读:

String string = "5.07+12.0+2.14";
string = string.replaceAll("\\.0(?=\\D)","");

如果您想替换所有 尾随零(例如,将 5.00 替换为 5 而不是 50 ,你可能不想要),然后用 + 重复 0 一次或多次,以确保替换小数点后的 所有 零:

String string = "5.07+12.000+2.14";
string = string.replaceAll("\\.0+(?=\\D)","");

如果字符串从不包含字母或下划线 _ 字符(这些字符和数字字符算作单词字符),那么您可以使用单词边界使其更漂亮前瞻性的。单词边界,顾名思义,将匹配一个位置,一侧是单词字符,另一侧是非单词字符,\b:

string = string.replaceAll("\\.0+\\b","");

关于java - 在 replaceAll 调用中修改部分正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52214158/

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