1

我想知道在 Java 中如何打印一个字符串,直到它到达该字符串中的“退出”一词,然后立即停止打印。例如,如果字符串值为:

“嗨,这是一个随机字符串退出,不应打印”

应该打印的只是“嗨,这是一个随机字符串”。

我正在尝试这样的事情,但我认为这是错误的。

if ( input.indexOf( "quit" ) > -1 ) 

    {

    //code to stop printing here
    }
4

4 回答 4

4

不要将问题视为“如何停止打印”(因为一旦您开始在 Java 中打印某些内容,就很难停止),而是从“我如何才能只打印到某个点的单词? " 例如:

int quit_position = input.indexOf("quit");
if (quit_position >= 0) {
    System.out.println(input.substring(0, quit_position));
} else {
    System.out.println(input);
}
于 2012-08-21T01:24:14.060 回答
3

看起来像家庭作业,所以这个答案是家庭作业式的。:-)

你在正确的轨道上。

将该 indexOf 的值保存为整数。

然后就像你有一个手指指向正确的位置 - 即,在你真正想要打印的子字符串的末尾。

反正就是个暗示……

编辑:看起来人们还是把它给了你。但这里还有一些想法:

  1. 您可能还想考虑大写和小写。
  2. 还要考虑如果不存在“退出”,您将要做什么。
  3. 此外,这里的解决方案并不能严格解决您的问题 - 它们也会在最后一个单词结束后、“退出”开始之前打印不必要的空格。如果这是一个问题,您可以考虑字符串标记化或上述replaceAll解决方案的改编,以涵盖将空格引导到“退出”。
于 2012-08-21T01:23:47.727 回答
2

这有一个单行解决方案:

System.out.println(input.replaceAll("quit.*", ""));


String.replaceAll()需要一个正则表达式来匹配,我已将其指定为“文字'退出'和后面的所有内容”,它将被""返回的字符串中的空白(即有效删除)替换

于 2012-08-21T01:26:11.457 回答
1

如果您不介意字符串中的尾随空格

int index = input.indexOf("quit");
if (index == -1) index = input.length();
return input.substring(0, index);
于 2012-08-21T01:23:11.703 回答