如何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。