使用replaceAll忽略复数,大写和标点符号?

时间:2016-11-28 20:45:36

标签: java

我试图制作一个程序来替换这句话中的单词,而这些程序是由用户想要替换的单词组成的:

  

"鸭子在鸭子跳舞时嘎嘎叫。快乐的鸭子!悲伤的鸭子!"

但是,问题在于我不知道如何用大写字母,复数形式,标点符号(鸭子,鸭子,鸭子!,鸭子等等)替换鸭子的版本

我目前有这个版本,但它所做的只是替换" duck",我不知道如何做其他版本。

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);
}

1 个答案:

答案 0 :(得分:1)

  

使用replaceAll忽略复数,大写字母和标点符号?

通过使用\\b包围模式,您已经很好地管理了标点符号。

要忽略大写(忽略大小写),您可以在模式前添加(?i),如下所示:

story = story.replaceAll("(?i)\\bduck\\b", replaceWord);

处理复数...这是特定于语言的,通常非常不规则。 如果你想处理类似的东西,那么你需要一个单数和复数形式的字典。即便如此,也可能存在一些特殊词语的漏报。

相关问题