在Java中用“is not”替换“is”

问题描述 投票:0回答:1

我在大学,我们的教授给了我们这个练习,用户应该输入一个句子,例如“生活很棒”(在本例中为

positiveInput
),我们应该将“是”一词替换为“不是”(
negativeOutput
)。 我已经编写了代码来做到这一点,但它把“生活是伟大的”变成了“生活并不伟大”。谁能向我解释一下为什么会显示这个额外的“s”?

这是我的代码:

public void compute() {
  for (int i = 0; i < positiveInput.length(); i++) {
    if (
      (positiveInput.charAt(i-1) == ' ') &&
      (positiveInput.charAt(i) == 'i') &&
      (positiveInput.charAt(i+1) == 's') &&
      (positiveInput.charAt(i+2) == ' ')
    ) {
      sb.append(positiveInput.charAt(i));
      sb.append(positiveInput.charAt(i+1));
      sb.append(' ');
      sb.append("not");
    } else {
      sb.append(positiveInput.charAt(i));
    }
  }
  negativeOutput = sb.toString();
}

出于某种原因,如果我将这段代码放在 if 语句中,它可以正常工作,但我似乎不明白为什么:

i+=2
java stringbuffer
1个回答
0
投票

如果您只需要将

"is"
替换为
"is not"
,那么您实际上需要将
" is "
替换为
" is not "
(注意两侧的空格),因为没有句子会开始或结束与
is
。这就是您可以使用 String.replaceAll 执行的操作,无需循环或 if 语句。

这只是一句台词:

public void compute() {
  negativeOutput = positiveInput.replaceAll(" is ", " is not ")`;
}

String 类中有很多有用的实用方法,可能值得通读它的文档,看看它还能做什么来让你的生活更轻松。

© www.soinside.com 2019 - 2024. All rights reserved.