[英]Replace unknown number of whitespace with zeros [Regex/Java]
我有以下文字:
Dorothy 123456789 0 98765Fashion
我需要用相同數量的0替換0到98765之間的空間,所以它看起來像:
Dorothy 123456789 0000098765Fashion
有一個問題:
到目前為止,我只用一個0替換0到98765之間的空格,但是它與零的所有其余空白都不匹配:
regexExpression = "(.{7}).(\\d{9})(..)0(\\s+)(\\d+)(.{7})";
replacement = "$1$2$300$5$6";
newString = oldString.replaceAll(regexExpression, replacement);
你可以在這里使用\\G
基礎的正則表達式:
(?<=0|\G)\h(?=\h*\d)
並替換為:
0
在Java代碼中:
str = str.replaceAll("(?<=0|\\G)\\h(?=\\h*\\d)", "0");
RegEx詳細信息:
\\G
在上一場比賽結束或第一場比賽的字符串開頭處斷言位置 (?<=0|\\G)
:確保我們在之前的位置有前一個匹配的零或結束 \\h
:匹配水平空格 (?=\\h*\\d)
:確保我們有0個或更多的空格,后跟一個數字 如果這是以字符串形式出現的話我會嘗試以下方法:
`
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;
}
}
`
如果您使用的是Java 9+ ,可以使用Matcher::replaceAll
如下所示:
newString = Pattern.compile("0(\\s*)\\d+")
.matcher(oldString)
.replaceAll(g -> g.group(0).replace(" ", "0"));
其中g.group(0)
將捕獲0和數字之間的所有空格,那么您可以用0替換該組中的每個空格。(簡單易行)。
輸出
Dorothy 123456789 00000000098765Fashion
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.