- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如何制作 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");
尝试将字符串从一种字符集转换为另一种字符集。什么都没有改变
最佳答案
如果您显示结果以防@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
关于java - 举一个在regex java中使用cyirillic的例子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343836/
我是一名优秀的程序员,十分优秀!