替换java中字符串中的特殊字符

时间:2010-04-09 14:20:58

标签: java regex string

我想知道如何用Java替换字符串。

E.g。

String a = "adf�sdf";

如何更换和避免特殊字符?

4 个答案:

答案 0 :(得分:14)

您可以使用printable ASCII range删除String#replaceAll()之外的所有字符,方法是将模式[^\\x20-\\x7e]替换为空字符串:

a = a.replaceAll("[^\\x20-\\x7e]", "");

但这实际上并没有解决您的实际问题。这更像是一种解决方法。根据给定的信息,很难确定这个问题的根本原因,但阅读其中任何一篇文章都必须提供很多帮助:

答案 1 :(得分:2)

如果不了解更多情况,很难回答这个问题。

通常,您可能遇到编码问题。有关字符编码的概述,请参见 The Absolute Minimum Every Software Developer (...) Must Know About Unicode and Character Sets

答案 2 :(得分:2)

假设您要删除所有特殊字符,可以使用字符类\p{Cntrl}然后您只需要使用以下代码:

stringWithSpecialCharcters.replaceAll("\\p{Cntrl}", replacement);

答案 3 :(得分:0)

您可以使用unicode转义序列(例如\u201c [开头的引号])来“避免”无法直接在源文件编码中使用的字符(默认为您的默认编码)您的平台,但您可以使用-encoding参数更改为javac)。