我是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/

10-09 00:13