我对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);
}
[将dont
替换为don't
,将youre
替换为you're
时效果很好。此方法的问题在于它将用DONT
代替don't
替换DON'T
。DoNt
-> don't
,而不是DoN't
是否有一种在保持正确大小写的同时替换单词的方法?
使用捕获组:
> "DoNt".replaceAll("(?i)\\b(don)(t)\\b", "$1'$2")
"DoN't" (String)
> "YoUrE".replaceAll("(?i)\\b(you)(re)\\b", "$1'$2")
"YoU'rE" (String)
[您还应该使用\b
作为单词边界,所以请不要无意间将“正畸医生”之类的单词更改为“正畸医生”。
有什么原因您不能再调用两次replaceAll
来将“ DONT”替换为“ DO N'T”,将“ YOURE”替换为“ YOU'RE”吗?