替换java中字符串中的特殊字符
我想知道如何在Java中替换字符串。
例如
String a = "adf sdf";
如何更换和避免特殊字符?
您可以使用String#replaceAll()
删除可打印ASCII范围之外的所有字符,方法是将模式[^\\x20-\\x7e]
替换为空字符串:
a = a.replaceAll("[^\\x20-\\x7e]", "");
但这实际上并不能解决您的实际问题。 这是一种解决方法。 根据给定的信息,很难确定这个问题的根本原因,但阅读其中任何一篇文章都必须提供很多帮助:
- 绝对最低每个软件开发人员绝对必须知道Unicode和字符集(没有借口!)
- Unicode – 如何使角色正确?
在不了解更多背景的情况下很难回答这个问题。
通常,您可能遇到编码问题。 有关字符编码的概述,请参阅绝对最低每个软件开发人员(…)必须了解Unicode和字符集 。
假设您要删除所有特殊字符,可以使用字符类\p{Cntrl}
然后您只需要使用以下代码:
stringWithSpecialCharcters.replaceAll("\\p{Cntrl}", replacement);
您可以使用unicode转义序列(例如\u201c
[开头的引号]来“避免”无法直接在源文件编码中使用的字符(默认为您的平台的默认编码,但您可以使用-encoding
参数将其更改为javac
)。