【发布时间】:2018-04-27 09:00:57
【问题描述】:
我想使用十六进制代码从 java 字符串中删除一个字符:
我正在尝试以下代码,但似乎不正确,因为字符没有被替换:ÿ
String str ="test ÿ";
str.replaceAll("\\x{9F}","")
十六进制代码的语法有什么问题吗?谢谢。
【问题讨论】:
-
ÿ 不是以 ASCII 开头的。那个字符是U+00FF - 我不知道你为什么期望正则表达式匹配它。您不使用
replaceAll的返回值这一事实也无济于事。 -
你为什么不直接使用
str.replaceAll("ÿ","");?这不应该工作吗? -
\x{9F}是一种在正则表达式模式中定义 Unicode 代码点的 PCRE 方式。在 Java 中,使用\uXXXX表示法。只需str = str.replace("ÿ","")也可以。 -
@Meryem 这不是 Jon 的意思。
replaceAll的返回是唯一相关的事情,因为 Java 字符串是不可变的。您需要执行str = str.replaceAll(...)以使其对str产生任何影响。 -
@Meryem:所以在 Java 字符串文字中使用十六进制值,而不是无缘无故地通过正则表达式:
str = str.replace("\u00ff", "");