在Java中如何替换字符串?例如:
String a = "adf�sdf";
如何替换和避免特殊字符?
wn9m85ua1#
您可以使用String#replaceAll(),通过将模式[^\\x20-\\x7e]替换为空字符串,来删除可打印ASCII范围之外的所有字符:
String#replaceAll()
[^\\x20-\\x7e]
a = a.replaceAll("[^\\x20-\\x7e]", "");
但这实际上并不能解决你的实际问题。它更多的是一种变通方法。根据给定的信息,很难确定这个问题的根本原因,但阅读这两篇文章中的任何一篇肯定会有很大帮助:
vwhgwdsa2#
如果不了解更多的背景情况,就很难回答这个问题。一般来说,您可能会遇到编码问题。有关字符编码的概述,请参阅**The Absolute Minimum Every Software Developer (...) Must Know About Unicode and Character Sets**。
qlzsbp2j3#
假设你想删除所有的特殊字符,你可以使用字符类\p{Cntrl},然后你只需要使用下面的代码:
\p{Cntrl}
stringWithSpecialCharcters.replaceAll("\\p{Cntrl}", replacement);
n9vozmp44#
您可以使用Unicode转义序列(如\u201c [一个左曲引号])来“避免”不能直接用于源文件编码(默认为您的平台的默认编码,但您可以使用-encoding参数将其更改为javac)的字符。
\u201c
-encoding
javac
4条答案
按热度按时间wn9m85ua1#
您可以使用
String#replaceAll()
,通过将模式[^\\x20-\\x7e]
替换为空字符串,来删除可打印ASCII范围之外的所有字符:但这实际上并不能解决你的实际问题。它更多的是一种变通方法。根据给定的信息,很难确定这个问题的根本原因,但阅读这两篇文章中的任何一篇肯定会有很大帮助:
vwhgwdsa2#
如果不了解更多的背景情况,就很难回答这个问题。
一般来说,您可能会遇到编码问题。有关字符编码的概述,请参阅**The Absolute Minimum Every Software Developer (...) Must Know About Unicode and Character Sets**。
qlzsbp2j3#
假设你想删除所有的特殊字符,你可以使用字符类
\p{Cntrl}
,然后你只需要使用下面的代码:n9vozmp44#
您可以使用Unicode转义序列(如
\u201c
[一个左曲引号])来“避免”不能直接用于源文件编码(默认为您的平台的默认编码,但您可以使用-encoding
参数将其更改为javac
)的字符。