[英]Replace all inconsistent character from a String in Java
好吧,我有一個包含字母,數字和一些“奇怪”字符的字符串。 我想用“空白”代替這個“奇怪”的字符。
看我原來的字符串:
AVE 14 DE JULHO N�130
我想替換為:
AVE 14 DE JULHO N 130
這只是一個例子,但是我有一個很大的文件,其中包含很多“正常字符”和另一個“奇怪字符”
您可以使用replaceAll
替換所有與模式匹配的字符:
String bad = "AVE 14 DE JULHO N�130";
String badPattern = "[^a-zA-Z0-9 ]"; // anything not a good character
String good = bad.replaceAll(badPattern, " ");
或者,如果您知道不良字符的范圍:
String bad = "AVE 14 DE JULHO N�130";
String badPattern = "[\\u0080-\\uffff]"; // anything above U+007f
String good = bad.replaceAll(badPattern, " ");
請注意,最后只是正匹配模式的示例,而不是建議使用哪個范圍! 特別是該范圍將消除大多數口音標記。
編輯最有可能的是,那些“奇怪”字符實際上是好的字符,它們在構建(或使用)字符串的過程中使用錯誤的字符編碼來解釋。 找到並糾正存在編碼錯誤的位置可能比嘗試濾除錯誤結果更好。
問題是有許多不同的字母和數字字符應被接受,例如:':','/','+','-','。',','
向該組添加了更多字符。 如果要允許字符,則只需將其鍵入方括號即可。
string.replaceAll("[^0-9A-Za-z\\s:,/+\\-.]", " ");
^
是補碼運算符。 這將用空格替換所有非數字和非字母。 如果您需要添加更多字符以免擦除,只需在組中添加字符。
最簡單的正則表達式模式是\\W
與replaceAll
。 只需使用:
string.replaceAll("\\W", " ");
例:
String original= "AVE 14 DE JULHO N�130";
String after=original.replaceAll("\\W", " ");
System.out.println(after);
輸出: AVE 14 DE JULHO N 130
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.