在Java中替换单词时保持相同的大小写

Enc*_*e42 0 java grammar replace minecraft bukkit

我对 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)

这部作品在更换FINEdontdon't,并youreyou're
这种方法的问题在于它会替换DONTdon't, 而不是DON'T
DoNt-> don't, 而不是DoN't

有没有办法在保持正确大小写的同时替换单词?

kay*_*ya3 5

使用捕获组:

> "DoNt".replaceAll("(?i)\\b(don)(t)\\b", "$1'$2")
"DoN't" (String)

> "YoUrE".replaceAll("(?i)\\b(you)(re)\\b", "$1'$2")
"YoU'rE" (String)
Run Code Online (Sandbox Code Playgroud)

您还应该使用\bfor 词边界,这样您就不会无意中将“orthodontist”之类的词更改为“orthodon'tist”。