[JavaScript] splitの振る舞いとcsvを配列に格納するコード

公開
更新日

スポンサーリンク

JavaScriptのsplitメソッドは指定した区切り文字で文字列を分割し、配列に格納してくれる。

var str = "foo,bar,hoge";
var arr = split( "," );
	// arr[0] -> foo
	// arr[1] -> bar
	// arr[2] -> hoge

引数には正規表現も指定できる。

var str = "foo,bar、hoge";
var reg = /[,、]/g
var arr = str.split( reg );
	// arr[0] -> foo
	// arr[1] -> bar
	// arr[2] -> hoge

指定した区切り文字が文字列中になかった場合も配列に収まる。

var str = "foo";
var reg = /[,、]/g
var arr = str.split( reg );
	// arr[0] -> foo

テキストエリアに入力されたcsv形式のテキストを、splitを利用し二次元配列に収めるコード。

var str = $("textarea").val();
str = str.replace( /\r\n/g , "\n" );		//IE対策 改行コード\r\nを\rに変換
str = str.replace( /^(\n+)|(\n+)$/g , "" );	//文頭と文末の余計な改行を除去
var arr = str.split( /\n/g );				//改行で分割
				
var data = [];
var reg = /[,\t]/g;							//タブまたはカンマで分割
for( var i = 0 , l = arr.length ; i < l ; i++ ){
	data[i] = arr[i].split( reg );
	for( var j = 0 , m = data[i].length ; j < m ; j++ ){//trimも同時に行っておく
		data[i][j] = data[i][j].replace( /(^\s+)|(\s+$)/g , ""  );
	}
}

2行目でブラウザごとの改行コードの差を吸収するため、改行コードをいったん\nに統一。テキストエリアの先頭と末尾に余計な改行が入っていると正しく処理できないので、3行目で空白行を除去。4行目で改行コードで分割し、いったん仮の配列に代入。7行目からカンマとタブでさらに分割。10~12行目はtrimで文字列の最初と最後に入った空白を除去している。

スポンサーリンク


Comment