打印字符串到某个单词 - Java

时间:2012-08-21 01:20:30

标签: java string printing

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

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

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

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

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

    {

    //code to stop printing here
    }

4 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:3)

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

你走在正确的轨道上。

将indexOf的值保存为整数。

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

无论如何,这是一个提示......

编辑:无论如何,看起来人们都会给你。但这里还有一些想法:

  1. 你可能也想考虑大小写。
  2. 如果“退出”不存在,还要考虑你要做什么。
  3. 此处的解决方案也没有严格解决您的问题 - 在“退出”开始之前,在最后一个单词结束后,它们也会打印不必要的空格。如果这是一个问题,您可以考虑String Tokenization或上述replaceAll解决方案的调整,以覆盖领先的空白为“退出”。

答案 2 :(得分:2)

这有一个单行解决方案:

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


String.replaceAll()使用正则表达式进行匹配,我已指定为“文字'退出'以及后面的所有内容”,这将由返回的空格""(即有效删除)替换串

答案 3 :(得分:1)

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

int index = input.indexOf("quit");
if (index == -1) index = input.length();
return input.substring(0, index);