_正規表現を使う その3

3回目になるので、徐々に正規表現にもなれてきました。

今回は、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でつぶやく (投稿画面に飛びます)

Comment Form
 

Trackback:0

TrackBack URL for this entry
http://paphead.com/mt/mt-tb.cgi/34
Listed below are links to weblogs that reference
_正規表現を使う その3from PAPHEAD

ayuzak

ディレクターをしています。
このブログは、自分自身のメモとして運営しています。

もっと見る

twitter

@paphead
カテゴリ

なかのひと