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

问题描述 投票:0回答:2

我对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'TDoNt-> don't,而不是DoN't

是否有一种在保持正确大小写的同时替换单词的方法?

java replace grammar minecraft bukkit
2个回答
3
投票

使用捕获组:

> "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作为单词边界,所以请不要无意间将“正畸医生”之类的单词更改为“正畸医生”。


0
投票

有什么原因您不能再调用两次replaceAll来将“ DONT”替换为“ DO N'T”,将“ YOURE”替换为“ YOU'RE”吗?

© www.soinside.com 2019 - 2024. All rights reserved.