好吧,我有一个字母,数字和一些“奇怪”字符的字符串。我想用“白色空间”取代这个“奇怪”的角色。
查看原始字符串:
AVE 14 DE JULHO N�130
我想替换为:
AVE 14 DE JULHO N 130
这只是一个例子,但我有一个包含大量“普通字符”的大文件和另一个“奇怪的字符”
答案 0 :(得分:3)
您可以使用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, " ");
请注意,最后一个只是积极匹配模式的示例,而不是建议使用的范围!特别是这个范围将消除大多数重音标记。
编辑这些“奇怪”字符很可能实际上是在构建(或使用)字符串的过程中使用错误字符编码解释的好字符。找到并纠正存在编码错误的地方可能更好,而不是试图过滤出错误的结果。
答案 1 :(得分:1)
问题是字母和数字有很多不同的字符 应该被接受,例如:':','/','+',' - ','。','','
为群组添加了更多字符。如果你想要允许一个角色,你只需将其输入方括号即可。
string.replaceAll("[^0-9A-Za-z\\s:,/+\\-.]", " ");
^
是补码运算符。这将用空格替换所有非数字和非字母。如果您需要添加更多字符以便不擦除,只需在组中添加字符即可。
答案 2 :(得分:0)
最简单的正则表达式模式是\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