我的目标是纠正消息中常见的语法错误。以下是我目前所写的内容:
@EventHandler
public void onChat(AsyncPlayerChatEvent event){
String message = event.getMessage().replaceAll("(?i)dont", "don't")
.replaceAll("(?i)youre", "you're");
event.setMessage(message);
}
这将用don't
替换dont
,用you're
替换youre
。问题是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
作为单词边界,这样你就不会无意中把"正畸医生"之类的单词改成"正畸专家"。