java - 使用 replaceAll 忽略复数、大写和标点符号?

标签 java

我正在尝试制作一个程序来替换这句话中的单词,我用用户想要替换的任何单词组成:

"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/

相关文章:

java - Spring Boot 1.5+ junit 测试不加载具有自定义名称的配置

c# - .Net 的 Java AST 解析器

java - 并发HashMap : Can we trust on it?

java - 将单词的整数表示形式转换回字符串

java - Java 8 中方法引用的外部参数

java - 执行java编译类命令行

java - 为什么我的 BST 不会写入文件?

java - 如何使用java编程语言将java String转换为mongodb_id的ObjectId

java - 如何设置 myweb.property 的位置以便 AnnotationConfigWebApplicationContext getEnvironment 可以找到它?

java - java中如何在对角线上画一个圆?