簡體   English   中英

替換前導零

[英]Replace Leading Zeros

給定一個包含以下內容的字符串:

Count     %
===========
00000  000%
00012  001%
00905  099%

我希望它看起來像這樣:

Count     %
===========
    0    0%
   12    1%
  905   99%

我能得到的最接近的是:

Count     %
===========
    %
 12   1%
 905   99%

使用此代碼:

strv.replaceAll("\\b0+", " ")

由於您希望空間保持原樣,因此將每個0匹配,然后替換為空格非常重要: '。 看一下這個正則表達式:

(?<=\b|\G)0(?=\d)
  • (?<=\\b|\\G)是正向后移,可確保匹配的0\\b\\G開頭
    • \\b表示單詞邊界,這意味着\\b0將幫助匹配第一個零
    • \\G幫助在上一個比賽的末尾(將在前一個零之后)斷言位置。 因此,它將有助於匹配下一個零,依此類推。 因此僅形成0的連續鏈。
    • 請注意,由於該鏈以\\b開頭,因此無法形成10000因為單詞邊界\\b1之前而不是0
  • 最后,還需要添加正向超前(?=\\d) ,因為如果輸入僅包含零,那么我們需要在后面保留一個零。 該正向提前指示引擎使所有零與后跟一個數字匹配 因此,如果輸入為0000 ,則正則表達式將匹配前3個0 ,因為后一個不跟數字

用法

strv.replaceAll("(?<=\\b|\\G)0(?=\\d)", " ")

Regex101演示

編輯:根據@SebastianProske的建議進行更新。 謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM