慕尼黑5688855
2021-12-22 15:13:26
我有以下文字: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
提交
取消