gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 20:04:09 24 4
gpt4 key购买 nike

如何制作 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com