Java正則表達式替換移除空行和多余的空格


1. 移除多余的連續空格,只留下一個空格。

string.replaceAll("\\s{2,}", " ");

比較簡單\\s代表空格,使用貪婪表達式,如果是2個或多個空格,則替換為空格。

續,實踐中發現不工作原來\\s不光代表空格,是等於[ \t\n\x0B\f\r]

\\p{Blank}{2,} 則是A space or a tab

更簡單的 string.replaceAll("[ ]+", " ");


2. 移除空行

string.replaceAll("(?m)^\\s*$"+System.lineSeparator(), "");

?m開啟多行模式,^是行開始,\\s*代表任意個空格,$代表行結束,System.lineSeparator()則是為了跨平台的換行符。

故所有空行包括只含有空格的空行都會被替換為空字符串,即被移除。


考慮到不同平台的文件存在混用的情況,可以改進為 string..replaceAll("(?m)^\\s*$(\\n|\\r\\n)", "");


3. 替換字符串中的唯一子字符串,如果子字符串含有正則表達式字符,則替換不成功。

可以考慮自己寫一個方法實現。

public String removeString(String str, String old) {
int i = str.indexOf(old);
if (i >= 0) {
return str.substring(0, i) + str.substring(i + old.length());
}
return str;
}
————————————————
版權聲明:本文為CSDN博主「kaukiyou」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/kaukiyou/article/details/46829375


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM