0

だから私は文字列を持っています:

String myString = "[tab][space]this[space][tab]is[space]a[space][tab]string";
String[] mySplit = myString.split("\\s+");

System.out.println(mySplit.length);
for (String s : mySplit) 
    System.out.println(s);  

私に与えます:

5
[whitespace] 
this
is
a
string

これはなぜですか?また、最初の位置が空白で埋められないようにするにはどうすればよいですか?

4

5 に答える 5

3

あなたが使用することができます:

myString.trim().split("\\s+");

これにより、文字列を空白で分割する前に、先頭または末尾の空白をすべて削除する必要があります。詳細については、ドキュメントをtrim参照してください。

于 2012-09-13T17:05:45.550 に答える
2

split()入力文字列が区切り文字で始まる場合、最初に返されるセグメントは空になります。これは少し直感に反するかもしれませんが、考えてみてください

String value = ",a,b,c";
String[] fields = value.split(",");

4 つの要素を取得する必要があります。

先頭の空白を削除する必要がある場合は、trim()最初に使用してください。

于 2012-09-13T17:14:01.363 に答える
1

何が起こっているかというと、split は空の文字列を含め、正規表現で終了するすべての部分文字列を見つけるということです。文字列の先頭にある「 \t 」を見つけて、空の文字列を終了するものとして解釈します。したがって、配列には最初の要素として空の文字列が含まれています。ポールの提案は、この問題を解決します。

興味深いのは、文字列がスペースで終わる場合、split は空の文字列を配列に含めないことです。

分割については javadoc を参照してください。

于 2012-09-13T17:16:54.517 に答える
0

はい、先頭と末尾の空白を削除するために使用される trim() メソッドを使用できます。

于 2012-09-13T17:35:13.723 に答える
0

あなたがこれをしようとしている機能はtrim().

まずは弦を切って…

String myString = "[tab][space]this[space][tab]is[space]a[space][tab]string";
String tempStr = myString.trim();

今すぐ split() を使用してください

tempStr.split("\\s+");

于 2012-09-13T17:17:00.633 に答える