使用正则表达式

时间:2015-07-14 01:26:53

标签: java regex unicode escaping

我的字符串如下

"them coming \nLove it \ud83d\ude00"

我想删除此字符"\ud83d\ude00"。所以它将是

"them coming \nLove it "

我如何在java中实现这一点?我尝试使用下面的代码,但它不起作用

payload.toString().replaceAll("\\\\u\\b{4}.", "")

谢谢:)

1 个答案:

答案 0 :(得分:0)

我认为\\\\u\\b{4}.不起作用,因为正则表达式将\ud83d视为符号 ,而不是文字字符串。因此,要匹配此类不需要的(出于任何原因)unicode字符,最好排除您接受的字符(不想替换),因此对于ecample所有ASCII字符,并匹配其他所有内容(您要替换的内容)。试试:

[^\x00-\x7F]+

\x00-\x7F包含Unicode Basic Latin block

String str = "them coming \nLove it \ud83d\ude00";
System.out.println(str.replaceAll("[^\\x00-\\x7F]+", ""));

将导致:

  他们来了   喜欢它

但是,如果您使用国家字符,任何其他非ASCII符号(ś,±,♉,☹等),您将遇到问题。