特定のScanner
オブジェクトの区切り文字を、新しい行、任意の連続するスペース、カンマ文字、およびドル記号文字に設定する必要があります。スキャナuseDelimiter文字列パラメータ?
私はこのコードを使用しています:
Scanner s = new Scanner("just\ndo it$bro,tm");
s.useDelimiter("\\n|,|\\s*\\s|\\$");
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());
その出力は次のようになります。
just newline
do newline
it newline
bro newline
tm newline
それは意図したように、区切り文字として希望の文字をマークしたが、二つの連続する区切り文字に遭遇したとき、System.out.println(s.next());
は新しい出力その瞬間にライン。例えば
Scanner s = new Scanner("just\ndo it$bro,tm");
が出力となるScanner s = new Scanner("just\ndo , it$bro,tm");
に変更された場合:これは、スペースが続くコンマを見つけたとき、それはコンマに続くスペース、および他の新しい行を見つけたとき
just newline
do newline
newline
newline
it newline
System.out.println(s.next());
は、新しい行を出力します。連続する区切り文字を1つの区切り文字として扱うには、どうすればこの問題を解決できますか?
私は最初の出力のように出力を生成することを意味します。
Scanner s = new Scanner("just\ndo , it$bro,tm");
s.useDelimiter("(,|\\s|\\$)+");
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());
System.out.println(s.next());
出力:
just
do
it
bro
tm
NB:ません
ありがとう –