comscom@Wiki
splitで最後の空白が反映されないの
最終更新:
dotcom
-
view
split:文字列を決まった文字で分割したいときに使うのです。
が。
こんな使い方しました。
データを分割・split(String)を使う
String dd = "なにかをいれます"; String[] strs = dd.split(","); for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); } System.out.println("項目数は:" + strs.length);
これね、最後対象の文字が続いていたら分けてくれないの。
たとえばddに「aaa,bbb,ccc,,,」と入れると、上の結果は
たとえばddに「aaa,bbb,ccc,,,」と入れると、上の結果は
aaa bbb ccc 項目数は:3
あら。最後の2つの空白はみてくれないのね。
ってなっちゃいます。
ってなっちゃいます。
でもddに「aaa,bbb,,,ccc,」と入れると、上の結果は
aaa bbb ccc 項目数は:5
文字が入っている間の空白は数に入る。
これはsplitの仕様なのです。
最後の空白を省く split(String)
詳しいことの説明はここではしないのです。
参考:
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html#split(java.lang.String)
このメソッドの動作は、2 つの引数を取る split メソッドを、指定された式および引数制限ゼロを指定して呼び出した場合と同じになります。
このため、末尾の空文字列は、結果の配列に含まれません。
なるほど。含まれないのね。たしかに含まれてませんでした。
でも、カンマ区切りのcsvファイル読み込みの時って、どこが空白かとかってわからないものじゃないですか。
最後が空白続きなのも多いし。
最後が空白続きなのも多いし。
適用範囲を決められる split(String,int)
そんなときはこっち使いましょう。
参考:
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/String.html#split(java.lang.String,%20int)
用例がわかりやすいようなわかりづらいような?
つまり、分ける対象の文字を指定した後に、ある数字を入れるとわける回数を決めてくれるのね。
。。。私の説明もわかりづらい。
。。。私の説明もわかりづらい。
やってみました。
- データを分割・split(String,int)を使う
String dd = "なにかをいれます"; String[] strs = dd.split(",",数字!); for (int i = 0; i < strs.length; i++) { System.out.println(strs[i]); } System.out.println("項目数は:" + strs.length);
こんな感じね。
「なにかをいれます」に「aaa,bbb,ccc,,,」を入れて「数字!」をいろいろ変えてみます。
- 「数字!」に「2」
aaaa,bbbb,cccc,,, 項目数は:1
1つだけってお願いしたから分けることなく1つだけ返したのね。
「数字!」に「2」
aaaa bbbb,cccc,,, 項目数は:2
2つに分けてってお願いしたから一つ目のカンマで分けて返したのね。
じゃ必要項目数分だと?
じゃ必要項目数分だと?
- 「数字!」に「6」
aaaa bbbb cccc 項目数は:6
なるほど。ぴったりですね。
じゃあ分ける項目数以上を指定したら?
じゃあ分ける項目数以上を指定したら?
- 「数字!」に「20」
aaaa bbbb cccc 項目数は:6
あら、上と同じ。
つまり実際分けられる数よりも多く指定したら、分けられた数しか返ってこないってことね。
うんうん。
つまり実際分けられる数よりも多く指定したら、分けられた数しか返ってこないってことね。
うんうん。
こんな指定もあったわ。
- 「数字!」に「-1」
aaaa bbbb cccc 項目数は:6
むう?同じ?
なぜ?と思って先ほどのリンク先見ると
n がゼロ未満の場合、パターンは可能な限り多く適用され、配列は任意の長さを保持できます。
だって。
なるほど。あるだけ確保なのね。
なるほど。あるだけ確保なのね。
ちなみに「数字!」に「0」を入れるとsplit(String)と同じことになります。つまり最後の空白は削除。
split(String,int)。これいいですね。intつけちゃいましょうそうしましょう。
関連
java.util.StringTokenizer
とーくないざー
トークン(分割)してくれます。
こっちのほうがいいかな。
とーくないざー
トークン(分割)してくれます。
こっちのほうがいいかな。