我想知道如何用Java替换字符串。
E.g。
String a = "adf�sdf";
如何更换和避免特殊字符?
答案 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
)。