我是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
,这样就不会无意间将“正畸医生”之类的单词更改为“正畸医生”。关于java - 替换Java中的单词时,保持相同的大小写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58793828/