我有以下文字:Dorothy 123456789 0 98765Fashion 我需要用相同数量的 0替换0和98765之间的空格,所以它看起来像:Dorothy 123456789 0000098765Fashion 有一个问题:0 到 98765 之间空白的确切数量是未知的。可能没有,也可能有很多。开头的 0 是一个常数,但 98765 中的数字也在变化。到目前为止,我只用一个 0 替换了 0 和 98765 之间的空格,但它不匹配所有其余的空格与零:regexExpression = "(.{7}).(\\d{9})(..)0(\\s+)(\\d+)(.{7})";replacement = "$1$2$300$5$6";newString = oldString.replaceAll(regexExpression, replacement);
3 回答
月关宝盒
TA贡献1772条经验 获得超5个赞
Java 9+
如果您使用的是Java 9+,您可以Matcher::replaceAll
像这样使用:
newString = Pattern.compile("0(\\s*)\\d+") .matcher(oldString) .replaceAll(g -> g.group(0).replace(" ", "0"));
Whereg.group(0)
将捕获 0 和数字之间的所有空格,然后您可以将该组中的每个空格替换为 0。(简单易行)。
输出
Dorothy 123456789 00000000098765Fashion
智慧大石
TA贡献1946条经验 获得超3个赞
如果这是作为字符串输入的,我会尝试以下操作:
`
String a = "Dorothy 123456789 0 98765Fashion";
char[] chars = a.toCharArray();
for(int i =0; i<chars.length;i++){
if(chars[i]==0&&chars[i+1]==' '){
chars[i+1]=0;
}
}
添加回答
举报
0/150
提交
取消