如何replacestring中的特殊字符?
我有一个有很多特殊字符的string。 我想删除所有这些,但保持字母字符。
我怎样才能做到这一点?
这取决于你的意思。 如果你只是想摆脱他们,做到这一点:
(更新:显然你想保留数字,在这种情况下使用第二行)
String alphaOnly = input.replaceAll("[^a-zA-Z]+",""); String alphaAndDigits = input.replaceAll("[^a-zA-Z0-9]+","");
或相当的:
String alphaOnly = input.replaceAll("[^\\p{Alpha}]+",""); String alphaAndDigits = input.replaceAll("[^\\p{Alpha}\\p{Digit}]+","");
(所有这些都可以通过预编译正则expression式并将其存储在常量中来显着提高)
或者,用番石榴 :
private static final CharMatcher ALNUM = CharMatcher.inRange('a', 'z').or(CharMatcher.inRange('A', 'Z')) .or(CharMatcher.inRange('0', '9')).precomputed(); // ... String alphaAndDigits = ALNUM.retainFrom(input);
但是如果你想把重音字符变成一些仍然是ascii的明智的东西,看看这些问题:
- 将Javastring转换为ASCII
- Java改变了aeouu
- ñññṅṇṋ̈ɲɲƞᶇ>>> – > n或从Unicode字符删除变音标记
我正在使用这个。
s = s.replaceAll("\\W", "");
它从string中replace所有特殊字符。
这里
\ w:单词字符,简写为[a-zA-Z_0-9]
\ W:非单词字符
您可以使用以下方法来保留字母数字字符。
replaceAll("[^a-zA-Z0-9]", "");
如果你只想保留字母字符使用这个
replaceAll("[^a-zA-Z]", "");
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9&, _]|^\s)", "");
这里除了空格,逗号和&符号之外的所有特殊字符都被replace了。 您还可以通过以下正则expression式来忽略空格,逗号和&符号。
string Output = Regex.Replace(Input, @"([ a-zA-Z0-9_]|^\s)", "");
Where Input是我们需要replace字符的string。
您可以在string上使用基本正则expression式来查找所有特殊字符,或使用模式和匹配器类来search/修改/删除用户定义的string。 这个链接有一些简单和易于理解的正则expression式的例子: http : //www.vogella.de/articles/JavaRegularExpressions/article.html
你可以从window pc的charactermap工具中得到这个垃圾字符的unicode,然后加上\ u00a9作为版权符号。 现在,您可以使用该string与特定的垃圾字符,不要删除任何垃圾字符,而是用适当的Unicodereplace。