文字列操作でしばしば使われるのがsplitだ。
今回は代表的なsplitの使用例を見ながら使い方をマスターしていきたい。
りんご,みかん,ばなな
という文字列があった場合、このそれぞれをデータとして扱いたい場合にはどうすればよいだろうか?
String str="りんご,みかん,ばなな"; String[] data=str.split(",");
としてあげればよい。カンマ記号で分割されそれを要素とした配列を生成してくれる。
上記の場合
data[0] //りんご data[1] //みかん data[2] //ばなな
という要素を持つ配列が生成される。
分割に指定する文字は何でもよい
「と」で分割
String str="さるといぬときじ"; String[] data=str.split("と");
data[0] //さる data[1] //いぬ data[2] //きじ
「and」で分割
String str="さるandいぬandきじ"; String[] data=str.split("and");
data[0] //さる data[1] //いぬ data[2] //きじ
ではこの場合はどうだろう?
間にカンマが並んでいる部分がある。
String str="りんご,みかん,,ばなな"; String[] data=str.split(",");
空の文字列として解釈される。
data.length //4 data[0] //りんご data[1] //みかん data[2] //"" data[3] //ばなな
○上限の分割数の指定
第二引数で分割数の上限を指定することもできる。
String str="りんご,みかん,ばなな"; String[] data=str.split(",",2);
上記の場合
data[0] //りんご data[1] //みかん,ばなな
1つ目を通常通り要素としたあと、残り全部を2つ目の要素としている。
以上でsplitの基本はOKだ。
○注意しなければならないパターン
ただ一つだけ注意しなければならないパターンがある。それは後部に空データが並ぶ場合だ。
String str="りんご,みかん,ばなな,,,"; String[] data=str.split(",");
data.length //3 data[0] //りんご data[1] //みかん data[2] //ばなな
意外な結果ではないだろうか?
末尾に空の要素が並んだ場合これは無視される。
これをすべて配列の要素として欲しい場合は
String str="りんご,みかん,ばなな,,,"; String[] data=str.split(",",-1);
と第二引数に負の値を入れる。
data.length=6; data[0] //りんご data[1] //みかん data[2] //ばなな data[3] //"" data[4] //"" data[5] //""
すべてを要素として取得できた。
splitメソッドの基本動作としてまずはこのレッスンの内容をマスターしておこう。
○上記の内容の全ソースコード
public class SplitLesson { public static void main(String[] args) { //基本的な使い方 String str="りんご,みかん,ばなな"; String[] data=str.split(","); System.out.println(data.length);//3 System.out.println(data[0]);//りんご System.out.println(data[1]);//みかん System.out.println(data[2]);//ばなな //「と」で分割 str="さるといぬときじ"; data=str.split("と"); System.out.println(data.length);//3 System.out.println(data[0]);//さる System.out.println(data[1]);//いぬ System.out.println(data[2]);//きじ //「and]で分割 str="さるandいぬandきじ"; data=str.split("and"); System.out.println(data.length);//3 System.out.println(data[0]);//さる System.out.println(data[1]);//いぬ System.out.println(data[2]);//きじ //途中に空データが入った場合 str="りんご,みかん,,ばなな"; data=str.split(","); System.out.println(data.length);//4 System.out.println(data[0]);//りんご System.out.println(data[1]);//みかn System.out.println(data[2]);//"" System.out.println(data[3]);//ばなな //第二引数を使うことで最大分割数を指定 str="りんご,みかん,ばなな"; data=str.split(",",2); System.out.println(data.length);//2 System.out.println(data[0]);//りんご System.out.println(data[1]);//みかん,ばなな //末尾に空データが並んだ場合は注意 str="りんご,みかん,ばなな,,,,"; data=str.split(","); System.out.println(data.length);//3 System.out.println(data[0]);//りんご System.out.println(data[1]);//みかん System.out.println(data[2]);//ばなな //末尾の空データも配列として取得したい場合は //第二引数に負の値をいれる str="りんご,みかん,ばなな,,,,"; data=str.split(",",-1); System.out.println(data.length);//7 System.out.println(data[0]);//りんご System.out.println(data[1]);//みかん System.out.println(data[2]);//ばなな System.out.println(data[3]);//"" System.out.println(data[4]);//"" System.out.println(data[5]);//"" System.out.println(data[6]);//"" } }
コメント