[英]regex for removing zeros in decimal string
我需要從十進制字符串中刪除零,例如:007.004(100.007)應該轉換為7.4(100.7)
我嘗試使用基於模式“ 0 +(\\ d)”的匹配器:
Pattern p = Pattern.compile(regex);
Matcher m = null;
try {
m = p.matcher(version);
while (m.find()) {
System.out.println("Group : " + m.group());
System.out.println("Group 1 : " + m.group(1));
version = version.replaceFirst(m.group(), m.group(1));
System.out.println("Version: " + version);
}
但這得出7.4(10.7)。 有什么想法嗎?
您需要使用以下模式進行替換:
(\\([^)]+\\))|0+
和這個替換字符串
\\1
換句話說,您需要先捕獲括號之間的所有內容,然后再尋找零。 使用replaceAll
方法。
如果您要刪除非零數字之前的前導零,則可以使用以下模式匹配此類運行: "(?<!\\\\d)0+(?=[1-9])"
。 這甚至會使用零長度的超前查詢,因為您的標簽顯示您可能想這樣做。 它也將比您的使用起來更簡單,因為它與您想要保留的任何內容都不匹配:
Pattern p = Pattern.compile("(?<!\\d)0+(?=[1-9])");
Matcher m = p.matcher(version);;
version = matcher.replaceAll("");
如果只執行一次,則可以簡化為單一格式:
version = version.replaceAll("(?<!\\d)0+(?=[1-9])", "");
匹配另一個字符串時,無需在另一個字符串中執行替換:
while (m.find()) {
version = version.replaceFirst(m.group(), m.group(1));
您可以改用以下替代方法:
version = version.replaceAll("(^|\\.)0+", "$1");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.