如何制作cyrillic
字符串的正则表达式,我想以某种方式使用它:
String.replaceAll("Кириллица","")
当然它不起作用。我该怎么办才能让它发挥作用?
好的,我看到该方法有效,但它对我不起作用。我如何检查,为什么方法不执行?
...
嗯,我试着用s1 = s1.replaceAll("[\\p{InCyrillic}]", "");
作为我通过套接字的字符串。它效果很好,所有西里尔字母都消失了,包括单词"Экзамен"
,但如果我尝试s1=s1.replaceAll("Экзамен","")
则没有任何反应。
但是方法s1=s1.replaceAll("Экзамен","")
在同一程序中为此程序中定义的静态字符串工作。我想这个问题可能是因为错误的字符集,但我仍然无法理解我做错了什么。字符串的字符集是windows-1251
。我尝试使用方法
System.setProperty("file.encoding", "windows-1251");
response.setCharacterEncoding("windows-1251");
尝试将字符串从一个字符集转换为另一个字符集。没有任何改变
答案 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