師匠の散歩Grandmaster Wander

JavaScriptのかけら4

  1. 正規表現
  2. 置換
  3. 分割
  4. 配列のコピー

正規表現

師匠はJavaScriptで文字列操作を行う機会がありませんでしたが、ここで簡単にまとめておきたいと思います。

\n
改行
\t
タブ

エスケープ文字を前に置くのはPerlと同じ書式です。

\'
シングルクォーテーション
\"
ダブルクォーテーション
\.
ピリオド
\/
スラッシュ

文字列置換

簡単な置換

  var text = "abcd012efg";
  text = text.replace("012","xyz");
  document.write(text);

ちょっとな置換

文字列「012」が出てきたら最初の1回だけxyzに変換

  var text = "abcd012012012efg";
  text = text.replace("012","xyz");
  document.write(text);

文字列「012」が出てきたら全てxyzに変換

  var text = "abcd012あ012い012efg";
  text = text.replace(/012/g,"xyz");
  document.write(text);

  var text = "abcd012あ012い012efg";
  var change = "xyz";
  text = text.replace(/012/g,change);
  document.write(text);

分割

CSVファイルはデータ間を「,」で区切っているので、データを「,」で分割する。

  var text = "lat=35.123,lon=138.123,height=123.45,name=ふじやま";
  var data = text.split(",");
  for(var i=0;i < data.length;i++){
    document.write(i + ":"+data[i] + "\n");
  }

配列のコピー

JavaScriptでは、配列のコピーは次のようにするとダメだそうです。

var a = [1,2,3,4,5];
var b = a;
a[2]=0;
document.write(a);
document.write(b);

これを改善する関数は次の通り。

// 多次元配列でも利用できる配列コピー
function copyArray(arrs){
  var newarrs = [];
  for(var i = 0;i < arrs.length;i++){ // >
    if(Array.isArray(arrs[i])){              // 引数が配列の場合
      newarrs[i] = copyArray(arrs[i]);   // 多重ループで対処
    }else{
      newarrs[i] = arrs[i];
    }
  }
  return newarrs;
}
var log = [[1,2,3,"e","いかそ"],[2,4,6,"t","電子台"],];

var loglog = copyArray(log);
log[0][4] = "師匠"; log[1][4] = "散歩";

document.write(loglog + "改行" + log);


Topに戻る // 一覧に戻る
Copyright(C) Grandmaster since 2010 最終更新:2016/4/21