splitで文字列分割を正しく

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

Filed under AS3, 問題解決メモ · Tagged with

Speak Your Mind

Tell us what you're thinking...
and oh, if you want a pic to show with your comment, go get a gravatar!

You must be logged in to post a comment.