亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用零替換未知數量的空格 [Regex/Java]

用零替換未知數量的空格 [Regex/Java]

慕尼黑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 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

您可以\G在此處使用基于正則表達式:

(?<=0|\G)\h(?=\h*\d)

并將其替換為:

0

在 Java 代碼中:

str = str.replaceAll("(?<=0|\\G)\\h(?=\\h*\\d)", "0");

正則表達式演示

正則表達式詳情:

  • \G 斷言位置在前一個匹配的末尾或第一個匹配的字符串的開頭

  • (?<=0|\G):確保我們在前一個位置有一個零或前一場比賽的結束

  • \h: 匹配水平空白

  • (?=\h*\d): 確保我們有 0 個或多個空格后跟一個數字


查看完整回答
反對 回復 2021-12-22
?
月關寶盒

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


查看完整回答
反對 回復 2021-12-22
?
智慧大石

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;

   }


}


查看完整回答
反對 回復 2021-12-22
  • 3 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號