文字列の検索・置換は、String.replace()メソッドに正規表現(RegExpクラス)を使うと簡単です(スクリプト001)。なお、正規表現による文字列の検索・置換については、「正規表現で文字列を扱う」をお読みください。
スクリプト001■String.replace()メソッドと正規表現で文字列を検索・置換var test_str:String = "すもももももももももももいろいろ"; var result_str:String = test_str.replace(/もも/g, "みみ"); trace(result_str); // 出力: すみみみみみみみみみみもいろいろ
もっとも、処理の速さは、Stringクラスのメソッドを組合わせて書いたスクリプトの方が勝るようです。
具体的には、メソッドString.indexOf()で検索文字列を探し、String.substring()またはString.substr()により置換文字列と連結します。流れとしては、つぎの3つの処理を検索文字列がなくなるまで繰返します。これを関数(xReplace())として定義したのが以下のスクリプト002です。
var test_str:String = "すもももももももももももいろいろ"; trace(xReplace(test_str, "もも", "みみ"));スクリプト002■メソッドString.indexOf()とString.substring()で文字列を検索・置換
function xReplace(source_str:String, find_str:String, replace_str:String):String { var numChar:uint = find_str.length; var end:int; var result_str:String = ""; for (var i:uint = 0; -1 < (end = source_str.indexOf(find_str, i)); i = end + numChar) { result_str += source_str.substring(i, end) + replace_str; } result_str += source_str.substring(i); return result_str; }
スクリプト001と002の速さの違いをwonderflのテスト用スクリプトで比べてみました。スクリプト002の方が行数も繰返しも多いのに、正規表現を使うよりかなり速いようです。
Replacing string by using RegExp or String class only - wonderfl build flash online