我正在尝试从字符串中过滤掉与语言无关的 Unicode 字符。
\n这是我想要的示例:
\nconst filt1 = "This will not be replaced: \xc3\xa6 \xc3\x87 \xc3\xbc"; // This will not be replaced: \xc3\xa6 \xc3\x87 \xc3\xbc\nconst filt2 = "This will be replaced: \xc2\xbb \xe2\x86\x95 \xe2\x97\x84"; // This will be replaced: \nRun Code Online (Sandbox Code Playgroud)\n我该怎么做呢?像重音字母和汉字这样的字符是我想保留的。箭头、方块、表情符号等应该被过滤掉。
\n我在网上找到了各种正则表达式过滤器,但没有一个完全符合我的要求。\n这个效果最好,但它体积庞大,并且不包含非重音字母数字字符。
\n((?![a-zA-Z\xc3\xa0\xc3\xa8\xc3\xac\xc3\xb2\xc3\xb9\xc3\x80\xc3\x88\xc3\x8c\xc3\x92\xc3\x99\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba\xc3\xbd\xc3\x81\xc3\x89\xc3\x8d\xc3\x93\xc3\x9a\xc3\x9d\xc3\xa2\xc3\xaa\xc3\xae\xc3\xb4\xc3\xbb\xc3\x82\xc3\x8a\xc3\x8e\xc3\x94\xc3\x9b\xc3\xa3\xc3\xb1\xc3\xb5\xc3\x83\xc3\x91\xc3\x95\xc3\xa4\xc3\xab\xc3\xaf\xc3\xb6\xc3\xbc\xc3\xbf\xc3\x84\xc3\x8b\xc3\x8f\xc3\x96\xc3\x9c\xc5\xb8\xc3\xa7\xc3\x87\xc3\x9f\xc3\x98\xc3\xb8\xc3\x85\xc3\xa5\xc3\x86\xc3\xa6\xc5\x93 ]).)*\nRun Code Online (Sandbox Code Playgroud)\n 我对 Java 比较陌生,所以请原谅任何白痴。
我正在使用 Bukkit 为 Minecraft 制作一个小插件。我想让它用正确的形式替换常见的语法错误。这是我的代码:
@EventHandler
public void onChat(AsyncPlayerChatEvent event){
String message = event.getMessage().replaceAll("(?i)dont", "don't")
.replaceAll("(?i)youre","you're");
event.setMessage(message);
}
Run Code Online (Sandbox Code Playgroud)
这部作品在更换FINEdont用don't,并youre用you're。
这种方法的问题在于它会替换DONT为don't, 而不是DON'T。
DoNt-> don't, 而不是DoN't
有没有办法在保持正确大小写的同时替换单词?