好吧,我有一个带有字母、数字和一些“奇怪”字符的字符串。我想用“空白”替换这个“奇怪”的字符。
看看我的原始字符串:
AVE 14 DE JULHO N�130
我想替换为:
AVE 14 DE JULHO N 130
这只是一个例子,但我有一个包含很多“正常字符”和另一个“奇怪字符”的大文件
好吧,我有一个带有字母、数字和一些“奇怪”字符的字符串。我想用“空白”替换这个“奇怪”的字符。
看看我的原始字符串:
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
with 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