替换 Java 中的单词时保持相同的大小写
Keep the same case when replacing words in Java
我对 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", "'")
"DoN't" (String)
> "YoUrE".replaceAll("(?i)\b(you)(re)\b", "'")
"YoU'rE" (String)
您还应该使用 \b
作为单词边界,这样您就不会无意中将 "orthodontist" 之类的单词更改为 "orthodon'tist"。
我对 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", "'")
"DoN't" (String)
> "YoUrE".replaceAll("(?i)\b(you)(re)\b", "'")
"YoU'rE" (String)
您还应该使用 \b
作为单词边界,这样您就不会无意中将 "orthodontist" 之类的单词更改为 "orthodon'tist"。