簡體   English   中英

替換Java中字符串中所有不一致的字符

[英]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:,/+\\-.]", " ");

^是補碼運算符。 這將用空格替換所有非數字和非字母。 如果您需要添加更多字符以免擦除,只需在組中添加字符。

最簡單的正則表達式模式是\\WreplaceAll 只需使用:

 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.

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