如何制作一个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");
Run Code Online (Sandbox Code Playgroud)
尝试将字符串从一个字符集转换为另一个字符集.没有任何改变
如果您在@Henry 的回答中显示您的结果可能会更清楚。我想是字符或编码的问题。要识别西里尔文中的字符串,您可以使用以下代码:
String s1 = "???a???";
s1 = s1.replaceAll("[\\p{InCyrillic}]", "");
System.out.println(s1);
Run Code Online (Sandbox Code Playgroud)
该代码将删除所有西里尔字符,您可以识别无效的编码字符。
如果您的结果类似于“a”或“e”或“ae”,这意味着您的字符串中存在类似于西里尔字母的拉丁字符,因此您应该使用此正则表达式替换
s1 = s1.replaceAll("???[aa]?[ee]?", "");
Run Code Online (Sandbox Code Playgroud)
其中 [a- 是西里尔字母,a- 是拉丁字符] 等等。
如果您的结果是“???a???”,则是编码问题,希望此链接对您有所帮助
刚刚尝试过这个:
\n\nString s1 = "\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb2 \xd1\x81\xd0\xbf\xd0\xb5\xd1\x86\xd0\xb8\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xbe\xd1\x81\xd1\x82\xd1\x8c (\xd0\x91.3.2.1-\xd0\x9f\xd0\xb8\xd0\x9a\xd0\x9e)60,3\xd0\xad\xd0\xba\xd0\xb7\xd0\xb0\xd0\xbc\xd0\xb5\xd0\xbd";\nString s2 = s1.replaceAll("\xd0\xad\xd0\xba\xd0\xb7\xd0\xb0\xd0\xbc\xd0\xb5\xd0\xbd", "");\nSystem.out.println(s2);\nRun Code Online (Sandbox Code Playgroud)\n\n输出是:
\n\n\xd0\x92\xd0\xb2\xd0\xb5\xd0\xb4\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb5 \xd0\xb2 \xd1\x81\xd0\xbf\xd0\xb5\xd1\x86\xd0\xb8\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbd\xd0\xbe\xd1\x81\xd1\x82\xd1\x8c (\xd0\x91.3.2.1-\xd0\x9f\xd0\xb8\xd0\x9a\xd0\x9e)60,3\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |