我正在尝试制作一个程序来替换这句话中的单词,我用用户想要替换的任何单词组成:
"The duck quacked at the ducks dancing. Happy ducks! Sad Ducks!"
但是,问题是我不知道如何用大写字母、复数、标点符号(鸭子、鸭子、鸭子!、鸭子!等)替换鸭子的版本
我目前有这个版本,但它所做的只是替换“鸭子”,我不确定如何做其他变体。
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
String story = "The duck quacked at the ducks dancing. Happy ducks! Sad Ducks!";
System.out.println("What word do you want replaced?");
String replaceWord = keyboard.nextLine();
story = story.replaceAll("\\bduck\\b", replaceWord);
System.out.println(story);
}
最佳答案
Using
replaceAll
to ignore plurals, capitals, and punctuation?
通过用 \\b
围绕模式,您已经很好地管理了标点符号。
要忽略大写(忽略大小写),您可以在模式前加上(?i)
,如下所示:
story = story.replaceAll("(?i)\\bduck\\b", replaceWord);
处理复数...这是特定于语言的,通常非常不规则。 如果你想处理这样的事情,那么你将需要一本单数和复数形式的字典。即使这样,一些特殊词也可能会出现漏报。
关于java - 使用 replaceAll 忽略复数、大写和标点符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40853152/