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)
这部作品在更换FINEdont
用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)
Run Code Online (Sandbox Code Playgroud)
您还应该使用\b
for 词边界,这样您就不会无意中将“orthodontist”之类的词更改为“orthodon'tist”。