1

Javaで、文字列の「quit」という単語に到達するまで文字列を印刷し、その時点ですぐに印刷を停止するにはどうすればよいか疑問に思いました。たとえば、文字列値が次の場合:

「こんにちは、これはランダムな文字列です。これは印刷しないでください」

印刷する必要があるのは、「こんにちは、これはランダムな文字列です」だけです。

私はこのようなことを試みていましたが、それは間違っていると思います。

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. また、「quit」がない場合に何をするかを検討してください。
  3. また、ここでの解決策は問題を厳密に解決するものではありません。最後の単語が終了した後、「quit」が開始する前に、不要なスペースも出力します。それが問題である場合は、文字列トークン化またはreplaceAll上記のソリューションの適応を検討して、空白を「終了」に導くことをカバーします。
于 2012-08-21T01:23:47.727 に答える
2

これには1行の解決策があります。

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


String.replaceAll()一致する正規表現を取ります。これは、「リテラル'quit'およびそれに続くすべて」として指定しました。これは""、返された文字列から空白に置き換えられます(つまり、事実上削除されます)。

于 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 に答える