アプリ版:「スタンプのみでお礼する」機能のリリースについて

例えば以下のようにtextarea内にデータが入力されているとします(カンマ区切り,スペース区切り,タブ区切りなどはなんでも良いのですが)。
+---ここから---+
1 2 3 4
5 6 7 8
9 10 11 12
+---ここまで---+
これらのデータを配列に格納する方法が,だいぶネットサーフィンしていたのですが分かりません。

以降,Perlになってしまうのですが,1行ずつ配列にdat=(1,2,3,4)のように格納していくか,あるいは行列(2次配列)の形で格納したいのです。

$pathname="D://datafile.dat";
open MYFILE, "$pathname";
while (<MYFILE>) {
chomp;
@{"dat$."} = split /,/;
}
close MYFILE;
+-----------
$pathname="D://datafile.dat";
open MYFILE, "$pathname";
@dat = map {chomp;[split /,/]} <MYFILE>;
close MYFILE;

A 回答 (3件)

No.1です。


例の「12」よりも後ろにある改行等は前処理が必要ですが,次のようにすれば,途中にある連続したスペース,行頭スペース,行末スペースはきにしなくて良さそうです。
No.1をすこし変えて,
for(var i in rows){//ここまでは同じ
 dat.push(rows[i].match(/¥d+/g));
}
以上
    • good
    • 0
この回答へのお礼

度々の回答ありがとうございました。各スペースのことを気にしなくても良くなったのでとても使い勝手がよくなりました

お礼日時:2006/10/01 20:29

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=SHIFT_JIS">
<script language="JavaScript"><!--
var dat = [];

window.onload=function(){
var ta=document.getElementById("DATA");
var rows=ta.value.split("\n");
for(var i=0;i<rows.length;i++){
dat.push(rows[i].split(","));
}
//点検
for(var i=0;i<dat.length;i++)
for(var j=0;j<dat[i].length;j++)
alert(dat[i][j]);
}
//-->
</script>
<title>テキストエリアのデータを配列に格納</title>
</head>
<body>
<textarea ID="DATA" cols="20" rows="10">1,2,3,4
5,6,7,8
9,10,11,12</textarea>
</body>
</html>
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。わざわざ一通り書いていくだすってとてもありがたいです。

お礼日時:2006/10/01 20:28

例示されたデータの通りで(数値を区切るスペースは1個),最後の「12」の後ろに改行が入っていないとすると,



var str=document.フォームの名前.テキストエリアの名前.value;
var dat=new Array();
var rows=str.split("¥n");
for(var i in rows){
 dat.push(new Array());
 var cols=rows[i].split(" ");
 for(var j in cols){
  dat[i].push(cols[j]);
 }
}

以上で,二次元配列datに格納されます(やってみたら格納されました。上はところどころ全角文字が混ざっていますが,半角になおしてください)。
Perlの実例で示されているような「chomp」に相当するものがJavaScriptには用意されていないと思うので,「データをきれいにする(不要な改行や連続したスペース,行頭,行末のスペースなどを取り除く)」は,自分で実装する必要があろうかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!