猿问

用零替换未知数量的空格 [Regex/Java]

我有以下文字:


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);


慕尼黑5688855
浏览 134回答 3
3回答

烙印99

您可以\G在此处使用基于正则表达式:(?<=0|\G)\h(?=\h*\d)并将其替换为:0在 Java 代码中:str&nbsp;=&nbsp;str.replaceAll("(?<=0|\\G)\\h(?=\\h*\\d)",&nbsp;"0");正则表达式演示正则表达式详情:\G&nbsp;断言位置在前一个匹配的末尾或第一个匹配的字符串的开头(?<=0|\G):确保我们在前一个位置有一个零或前一场比赛的结束\h: 匹配水平空白(?=\h*\d): 确保我们有 0 个或多个空格后跟一个数字

月关宝盒

Java 9+如果您使用的是Java 9+,您可以Matcher::replaceAll像这样使用:newString&nbsp;=&nbsp;Pattern.compile("0(\\s*)\\d+") &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.matcher(oldString) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.replaceAll(g&nbsp;->&nbsp;g.group(0).replace("&nbsp;",&nbsp;"0"));Whereg.group(0)将捕获 0 和数字之间的所有空格,然后您可以将该组中的每个空格替换为 0。(简单易行)。输出Dorothy&nbsp;123456789&nbsp;&nbsp;00000000098765Fashion

智慧大石

如果这是作为字符串输入的,我会尝试以下操作:`String a = "Dorothy 123456789&nbsp; 0&nbsp; &nbsp; &nbsp; &nbsp; 98765Fashion";char[] chars = a.toCharArray();for(int i =0; i<chars.length;i++){&nbsp; &nbsp;if(chars[i]==0&&chars[i+1]==' '){&nbsp; &nbsp; &nbsp; chars[i+1]=0;&nbsp; &nbsp;}}
随时随地看视频慕课网APP

相关分类

Java
我要回答