5

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

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

当然是行不通的。我该怎么做,让它发挥作用?

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

...

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

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

System.setProperty("file.encoding", "windows-1251");
response.setCharacterEncoding("windows-1251"); 

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

4

2 回答 2

5

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

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

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

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

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

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

如果您的结果为“Экзaмен”,则表示编码问题,希望此链接对您有所帮助

如何确定字符串是否包含无效的编码字符

于 2013-01-16T07:47:31.357 回答
1

刚试过这个:

String s1 = "Введение в специальность (Б.3.2.1-ПиКО)60,3Экзамен";
String s2 = s1.replaceAll("Экзамен", "");
System.out.println(s2);

输出是:

Введение в специальность (Б.3.2.1-ПиКО)60,3
于 2013-01-15T19:12:33.647 回答