举一个在regex java中使用cyirillic的例子

时间:2013-01-15 17:57:23

标签: java regex string

如何制作cyrillic字符串的正则表达式,我想以某种方式使用它:

String.replaceAll("Кириллица","")

当然它不起作用。我该怎么办才能让它发挥作用?

好的,我看到该方法有效,但它对我不起作用。我如何检查,为什么方法不执行?

...

嗯,我试着用s1 = s1.replaceAll("[\\p{InCyrillic}]", "");作为我通过套接字的字符串。它效果很好,所有西里尔字母都消失了,包括单词"Экзамен",但如果我尝试s1=s1.replaceAll("Экзамен","")则没有任何反应。

但是方法s1=s1.replaceAll("Экзамен","")在同一程序中为此程序中定义的静态字符串工作。我想这个问题可能是因为错误的字符集,但我仍然无法理解我做错了什么。字符串的字符集是windows-1251。我尝试使用方法

在程序中尝试使用charset(现在是jsp)
System.setProperty("file.encoding", "windows-1251");
response.setCharacterEncoding("windows-1251"); 

尝试将字符串从一个字符集转换为另一个字符集。没有任何改变

1 个答案:

答案 0 :(得分:4)

如果你在@ Henry的回答中显示你的结果,可能会很清楚。 我想在字符或编码方面存在问题。 要使用以下代码识别西里尔字符串:

String s1 = "Экзaмен";
s1 = s1.replaceAll("[\\p{InCyrillic}]", "");
System.out.println(s1);

代码将删除所有西里尔字符,您可以识别无效的编码字符。

如果您的结果将类似于“a”或“e”或“ae”,则表示在您的字符串中存在与西里尔字母相似的拉丁字符,因此您应该使用此正则表达式替换

 s1 = s1.replaceAll("Экз[aa]м[ee]н", "");

其中[a-是西里尔字符和a-是拉丁字符]等等。

如果您的结果将是“Экзaмен”,编码问题,我希望此链接可以帮助您

How to determine if a String contains invalid encoded characters