複雑な構文解析は Perl5Util(Jakarta ORO) や java.util.regex を使う、
もっと複雑になるとXMLパーサーやJavaCCの出番になるけど
String str = "abc,def,ghi"; String[] columns = str.split(","); System.out.println( columns.length ); for( String s : columns ){ System.out.println( s ); }
3 abc def ghi
String str = "abc,def,ghi,"; String[] columns = str.split(","); System.out.println( columns.length ); for( String s : columns ){ System.out.println( s ); }
3 abc def ghi
StringTokenizer tokenizer = new StringTokenizer( string , "," ); int cnt = 0; while( tokenizer.hasMoreToken() ){ data[ cnt++ ] = Integer.parseInt( tokenizer.nextToken().trim() ) ); }値にパースするときには、切り出した文字をtrim()するのがミソ
string = string.charAt( string.length() - 1 ) == ',' ? string : string + ","; StringTokenizer tokenizer = new StringTokenizer( string , "," ); int dataSize = tokenizer.countTokens() - 1; for( int cnt = 0 ; cnt < dataSize ; cnt++ ){ data[ cnt ] = Integer.parseInt( tokenizer.nextToken().trim() ); }
StringTokenizer tokenizer = new StringTokenizer( string , "," ); int dataSize = tokenizer.countTokens(); dataSize = dataSize - dataSize % 3 for( int cnt = 0 ; cnt < dataSize ; cnt+=3 ){ x = Integer.parseInt( tokenizer.nextToken().trim() ); y = Integer.parseInt( tokenizer.nextToken().trim() ); data[x][y] = Integer.parseInt( tokenizer.nextToken().trim() ); }不正な入力に対する例外処理が弱いような気がするけど・・・そういう例外処理がひつようなら java.util.Regex を使って正規表現で切り出した方が賢い