java - 替换字符串中的子字符串

标签 java string replace

我今年 16 岁,正在尝试学习 Java,我叔叔给了我一篇论文,其中涉及 Java 的内容。其中之一就是编写并执行一个程序,该程序将接受扩展消息作为字符串,例如

Each time she saw the painting, she was happy

并将“she”一词替换为“he”一词。

Each time he saw the painting, he was happy.

这部分很简单,但他希望我能够采用任何形式的 she 并将其替换为他喜欢的形式(sheheShe 她?他?她。他。she'he' 等等)。有人可以帮我制作一个程序来完成这个任务吗?

我有这个

public static void main(String[] args) {
    Scanner keyboard = new Scanner(System.in);
    System.out.println("Write Sentence");
    String original = keyboard.nextLine();
    String changeWord = "he";
    String modified = original.replaceAll("she", changeWord);
    System.out.println(modified);
}

如果这不是找到此类问题答案的正确网站,您能否将我重定向到可以回答此类问题的网站?

最佳答案

最好的方法是使用正则表达式 (regex)。正则表达式允许您匹配单词的模式或类别,以便您可以处理一般情况。考虑您已经列出的案例:

(她对他,她对他,她?对他?,她。对他。,她'对他'等等)

这些案例有什么共同点?您能想到一些适用于所有此类转换的一般规则吗?

但也要考虑一些您没有列出的情况:例如,正如您现在编写的那样,您的代码会将单词“ashes”更改为“ahes”,因为“ashes” ” 包含“她”。正确编写的正则表达式可以让您避免这种情况。

在深入研究正则表达式之前,尝试用简单的英语表达一条或一组规则,说明您想要替换的内容以及应该替换的内容。

然后,learn some regex并尝试应用这些规则。

最后,尝试为各种情况编写一些测试(即使用 JUnit),以便您可以了解代码适用于哪些情况以及不适用于哪些情况。

完成此操作后,如果某些内容仍然不起作用,请随时在此处发布一个新问题,向我们展示您的代码并解释什么不起作用。我们很乐意提供帮助。

关于java - 替换字符串中的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850005/

相关文章:

java - 在简单的 servlet 中创建 REST 类型的 url,例如 {resource}/<id>

java - 准备好的查询的奇怪错误不是 SELECT_LONG 类型

c - 如何在C中的递归函数中连接整数和字符串

c - 使用指向字符串的指针解析字符串而不使用 strdup 和 strtok 函数

javascript - 将状态设置为空字符串不会为我触发重新渲染?

javascript - 替换正则表达式

list - 在 Lisp 中替换列表小节的最惯用方法

python - 正则表达式替换文本之前和之后,保持文本就位

java - 只是Java中的一个小递归问题

java - Linux 终端输出到 JTextpane