我在大学,我们的教授给了我们这个练习,用户应该输入一个句子,例如“生活很棒”(在本例中为
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
如果您只需要将
"is"
替换为 "is not"
,那么您实际上需要将 " is "
替换为 " is not "
(注意两侧的空格),因为没有句子会开始或结束与 is
。这就是您可以使用 String.replaceAll 执行的操作,无需循环或 if 语句。
这只是一句台词:
public void compute() {
negativeOutput = positiveInput.replaceAll(" is ", " is not ")`;
}
String 类中有很多有用的实用方法,可能值得通读它的文档,看看它还能做什么来让你的生活更轻松。