_正規表現を使う その3
- 2009-03-28(土)
- ActionScript,
- Flash

3回目になるので、徐々に正規表現にもなれてきました。
今回は、split()から見ていきます。
また、オプションで、2番目の引数で要素の最大個数を指定する事ができます。
今回は、split()から見ていきます。
split()
split()メソッドは、指定した区切り文字(デリミタ)でストリングを配列に分解します。また、オプションで、2番目の引数で要素の最大個数を指定する事ができます。
var text:String = "iPod、iPhone、iMac、iTune";
var list:Array = text.split("、");
trace(list.length);//4
trace(list[0]);//iPod
trace(list[1]);//iPhone
trace(list[2]);//iMac
trace(list[3]);//iTune
グループマッチを使う
複数のパターンを組み合わせたパターンを作りたいときは、()で囲んだグループを使う事ができます。グループを使ったときは、マッチしたテキストはグループの順番で、$1、$2、$3、$4のように順番に入ります。これを後方参照と呼ぶそうです。
var number:String = "2002-80-W0"; var pattern:RegExp = /(\d+)-(\w+)-(\w+)/; var replaceText:String = "$1年$2シリーズ(type:$3)"; var newNumber:String = number.replace(pattern, replaceText); trace(newNumber);次の例は、正規表現を利用して数字を3桁区切りにする関数です。
function formatComma(str:*):String {
//数字以外を削除したストリングにする
var numStr:String = String(str).replace(/,/g, "");
//3桁区切りを実行する
var tmpStr:String;
while (numStr != tmpStr) {
tmpStr = numStr;
numStr = numStr.replace(/^([+-]?\d+)(\d{3})/, "$1,$2");
}
return numStr;
}
var number:String = "-12346789.0123";
var numStr1:String = formatComma(number);
trace(numStr1);
関数の値で置換する
replace()メソッドは、置換テキストに関数を指定することで、置換するテキストを関数で決めることができます。次のは、ストリングの中の数値を検索し、zeroNo()を使って0を前に付与した4桁の数字に変換して置換します。
var text:String = "A45X";
var pattern:RegExp = /\d+/;
var newText:String = text.replace(pattern, zeroNo);
trace(newText);//A0045X
function zeroNo(...args):String {
var no:int = args[0];
var keta:int = 4;
var zero:int = Math.pow(10, keta);
var zeroNo:String = String(zero + no);
zeroNo = zeroNo.substr(1, keta);
return zeroNo;
}
引数...argsで受けたときにマッチした部分は、args[0]でとれます。
このエントリーをTwitterでつぶやく (投稿画面に飛びます)
- Newer: _Flash(AS3)のデバックツール
- Older: _Progressionでシーン間のデータの受け渡し





