2016-07-12 11 views
0

私はJavaに新しいので、区切り文字を使用して文字列を解析する簡単なプログラムを作成しようとしています。しかし、私はしようとするたびに、代わりにこのような行を印刷する次の操作を行います。Java区切り文字を個別に印刷する

Hello World 
I am Bob 
how are you 

それは独自の行に個別に各文字を出力します。ここに私のコードは次のとおりです。

import java.util.Scanner; 

public class ScannerDemo { 

    public static void main(String args[]){ 
     String s = "Hello World|I am bob|how are you "; 
     Scanner scan = new Scanner(s); 
     scan.useDelimiter("|"); 
     System.out.println(scan.next()); 
     while (scan.hasNext()){ 
      System.out.println(scan.next()); 
     } 

    } 
} 

Pmを77-1あなたはパイプ文字をエスケープする必要が述べたように任意の助けが

+2

を試す|'(パイプライン)の正規表現で特別な意味を持っている - あなたはそれをエスケープする必要があります。この非常に近いトピックを読む:http://stackoverflow.com/questions/9808689/why-does-string-split-need-pipe-delimiter-to-be-escaped –

答えて

1

をapreciatedされるだろう:

import java.util.Scanner; 

    public class ScannerDemo { 

    public static void main(String args[]){ 
     String s = "Hello World|I am bob|how are you "; 
     Scanner scan = new Scanner(s); 
     scan.useDelimiter("\\|"); 
     System.out.println(scan.next()); 
     while (scan.hasNext()){ 
      System.out.println(scan.next()); 
     } 

    } 
} 
2

PIPEが持っている別の区切り文字を使用してくださいエスケープする必要のある特殊文字。

厳密にパイプ記号が必要な場合は、 `

scan.useDelimiter("\\|"); 
+0

ちょうど追加する...私は本当に目的を知らないあなたの要件の。しかし、文字列(他のIO操作ではない)からのみ区切りたい場合は、文字列配列を返すStringクラスのsplitメソッドを使用することをお勧めします。 –

関連する問題