splitで文字列分割を正しく
文字分割でハマったのでメモ。
カンマで区切りで分割する前提のルールで 文字列を分割する簡単なプログラムですが このままでは思い通りの動きをしません。
文字列に要素がある場合
var str:String="あ,愛,アイウ"; var ary:Array=[]; trace("配列要素:",ary.length); ary=str.split(","); trace("-- split後 --") trace("配列要素:",ary.length); // 配列要素: 0 // -- split後 -- // 配列要素: 3
文字列が空の場合
var str:String=""; var ary:Array=[]; trace("配列要素:",ary.length); ary=str.split(","); trace("-- split後 --") trace("配列要素:",ary.length); // 配列要素: 0 // -- split後 -- // 配列要素: 1
文字列が空の場合でも配列に1つ要素が追加されてしまい 正しい動作をすることができません。
対象の文字列が空の場合は 分割した文字列を格納する配列は空になるはず。
それが実際は配列に空の要素が1つ入ります。
空の文字列に対応するために 文字列の長さで空なのかを判別する ソースを追加して対応します。
if(str.length!=0){ ary=str.split(","); }
これで思い通りの動きとなります。
var str:String=""; var ary:Array=[]; trace("配列要素:",ary.length); if(str.length != 0){ ary=str.split(","); } trace("-- split後 --") trace("配列要素:",ary.length); // 配列要素: 0 // -- split後 -- // 配列要素: 0