文字列操作でしばしば使われるのがsplitだ。
今回は代表的なsplitの使用例を見ながら使い方をマスターしていきたい。
りんご,みかん,ばなな
という文字列があった場合、このそれぞれをデータとして扱いたい場合にはどうすればよいだろうか?
1 | String str= "りんご,みかん,ばなな" ; |
2 | String[] data=str.split( "," ); |
としてあげればよい。カンマ記号で分割されそれを要素とした配列を生成してくれる。
上記の場合
という要素を持つ配列が生成される。
分割に指定する文字は何でもよい
「と」で分割
2 | String[] data=str.split( "と" ); |
「and」で分割
1 | String str= "さるandいぬandきじ" ; |
2 | String[] data=str.split( "and" ); |
ではこの場合はどうだろう?
間にカンマが並んでいる部分がある。
1 | String str= "りんご,みかん,,ばなな" ; |
2 | String[] data=str.split( "," ); |
空の文字列として解釈される。
○上限の分割数の指定
第二引数で分割数の上限を指定することもできる。
1 | String str= "りんご,みかん,ばなな" ; |
2 | String[] data=str.split( "," , 2 ); |
上記の場合
1つ目を通常通り要素としたあと、残り全部を2つ目の要素としている。
以上でsplitの基本はOKだ。
○注意しなければならないパターン
ただ一つだけ注意しなければならないパターンがある。それは後部に空データが並ぶ場合だ。
1 | String str= "りんご,みかん,ばなな,,," ; |
2 | String[] data=str.split( "," ); |
意外な結果ではないだろうか?
末尾に空の要素が並んだ場合これは無視される。
これをすべて配列の要素として欲しい場合は
1 | String str= "りんご,みかん,ばなな,,," ; |
2 | String[] data=str.split( "," ,- 1 ); |
と第二引数に負の値を入れる。
すべてを要素として取得できた。
splitメソッドの基本動作としてまずはこのレッスンの内容をマスターしておこう。
○上記の内容の全ソースコード
01 | public class SplitLesson { |
03 | public static void main(String[] args) { |
05 | String str= "りんご,みかん,ばなな" ; |
06 | String[] data=str.split( "," ); |
07 | System.out.println(data.length); |
08 | System.out.println(data[ 0 ]); |
09 | System.out.println(data[ 1 ]); |
10 | System.out.println(data[ 2 ]); |
15 | System.out.println(data.length); |
16 | System.out.println(data[ 0 ]); |
17 | System.out.println(data[ 1 ]); |
18 | System.out.println(data[ 2 ]); |
22 | data=str.split( "and" ); |
23 | System.out.println(data.length); |
24 | System.out.println(data[ 0 ]); |
25 | System.out.println(data[ 1 ]); |
26 | System.out.println(data[ 2 ]); |
31 | System.out.println(data.length); |
32 | System.out.println(data[ 0 ]); |
33 | System.out.println(data[ 1 ]); |
34 | System.out.println(data[ 2 ]); |
35 | System.out.println(data[ 3 ]); |
39 | data=str.split( "," , 2 ); |
40 | System.out.println(data.length); |
41 | System.out.println(data[ 0 ]); |
42 | System.out.println(data[ 1 ]); |
45 | str= "りんご,みかん,ばなな,,,," ; |
47 | System.out.println(data.length); |
48 | System.out.println(data[ 0 ]); |
49 | System.out.println(data[ 1 ]); |
50 | System.out.println(data[ 2 ]); |
54 | str= "りんご,みかん,ばなな,,,," ; |
55 | data=str.split( "," ,- 1 ); |
56 | System.out.println(data.length); |
57 | System.out.println(data[ 0 ]); |
58 | System.out.println(data[ 1 ]); |
59 | System.out.println(data[ 2 ]); |
60 | System.out.println(data[ 3 ]); |
61 | System.out.println(data[ 4 ]); |
62 | System.out.println(data[ 5 ]); |
63 | System.out.println(data[ 6 ]); |
コメント