【问题标题】:The replace function in JavaJava中的替换函数
【发布时间】:2023-04-08 12:51:01
【问题描述】:

我在Java中有这个函数,给定一个文本,一个单词数组和一个字符,应该检查“单词”数组中的单词是否存在于文本中,如果存在,用给定的字符包围它们“C”。

这是我想出的:

public void replaceString(BufferedReader in, BufferedWriter out, char c, String[] words){

    String line_in = in.readLine();
    String result = null;

        while (line_in != null) {

            for (int j = 0; j < words.length; j++) {

                if (line_in.toLowerCase().contains(words[j].toLowerCase())) {

                    result = line_in.replace(words[j], bold + words[j] + bold);

                }

                else
                    result = line_in;

            }

            out.write(result);
            out.newLine();
            line_in = in.readLine();

        }

}

但是,由于某种原因,替换方法没有做任何事情......

任何帮助将不胜感激!

【问题讨论】:

  • 您正在测试小写字符串中的小写单词。这并不意味着替换触发,这是区分大小写的。

标签: java arrays string replace contains


【解决方案1】:

您的算法逻辑不正确:result 被设置为仅for 循环的最后一次迭代的结果,因此如果未检测到最后一个单词,您将得到原始行。

您应该将代码更改如下:

result = line_in;
for (int j = 0; j < words.length; j++) {
    if (result.toLowerCase().contains(words[j].toLowerCase())) {
        result = result.replace(words[j], bold + words[j] + bold);
    }
}

现在result 具有上次替换的结果,如果没有检测到任何单词,则为原始line_in。

注意:您的逻辑会检查不区分大小写的匹配,但您的 replace 代码会进行区分大小写的匹配。当输入是混合大小写时,这可能会导致问题。

【讨论】:

  • 我仍然遇到同样的问题...看起来替换方法没有做任何事情...
  • @laker001 - 尝试确保您的代码确实进入了“if”部分。无论如何,我认为该条件是多余的,您可以直接使用“替换”,正如我在回答中(单独)建议的那样。
  • @OferLando 它进入 if 部分并到达替换行,但根本没有任何反应
【解决方案2】:

您可能可以将验证放在循环中并继续:

for (int j = 0; j < words.length; j++) {
    result = line_in.replace("(?i)" + words[j], bold + words[j] + bold);
}

这将使用更新的值填充“结果” - 覆盖替换本身内置的区分大小写选项(感谢“?i”选项)。

【讨论】:

  • 用你的代码,程序进入替换行,但输出总是和输入一样。
  • 你能提供一些例子吗?一个“源”字符串和一组“单词”?
  • 顺便说一句,可能是“粗体”没有正确初始化,因此替换工作正常 - 但它只是用自己替换 words[j],例如单词[j]?
  • 问题是你的函数只适用于小写或大写单词,如果同一个单词中有大小写字母,替换不起作用
  • (?i) 告诉 replace 不区分大小写。它应该工作。这就是为什么我要求提供示例,以了解我们在这里可能缺少什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 2019-11-21
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多