- ベストアンサー
AS3.0で文字列を置換する方法と注意点
- AS3.0で文字列を置換する方法について説明します。正規表現を使って文字列を置換することができますが、注意点もあります。
- AS3.0では、文字列の置換には正規表現を使います。ただし、型がxmlの場合は文字列に変換する必要があります。
- タグを含む文字列を置換する場合、タグの前後にある文字列も置換されるため、注意が必要です。タグを識別して置換する方法を検討するか、文字を置換または抜き出す方法を使用することができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
おそらく正規表現を使えばできると思います。 新規ドキュメントを作成し フレームに記述(コピペ)するスクリプト例です↓。 -------------------------- //文章を設定 var str1:String = 'He <font color ="#00FFFF">gose</font> to library.'; //置換するパターン var pattern:RegExp = /<font color ="#00FFFF">.*?<\/font>/g; //置換後の文章を取得(複数ある場合は最短一致) var str2:String = str1.replace(pattern, '<font color ="#00FFFF">_______<\/font>'); //置換後の文章を出力窓に出力 trace(str2); -------------------------- または -------------------------- //文章を設定 var str1:String = 'He <font color ="#00FFFF">gose</font> to library.'; //置換するパターン(複数ある場合は最短一致) var pattern:RegExp = /<font color ="#00FFFF">.*?<\/font>/g; //置換後の文章を取得 var str2:String = str1.replace(pattern, "_______"); //置換後の文章を出力窓に出力 trace(str2); -------------------------- 「制御」→「ムービープレビュー」で出力窓を確認してみてください。 もし, タグに 「font color ="#00FFFF"」 が入っている入っていないに関わらず他の場合でも, 例えば文章が 「He <font size="4">goes</font> to library.」 の場合でも 「He <u>gose</u> to library.」 の場合でも 同様のことをする場合は次のようになります(???) (色々な場合でうまく行くかどうかはわかりません...) -------------------------- //文章を設定 var str1:String = 'I <font size="4">love</font> you. You <u>like</u> me.'; //置換するパターン var pattern:RegExp = />[^<]*<\//g; //置換後の文章を取得 var str2:String = str1.replace(pattern, '>_______</'); //置換後の文章を出力窓に出力 trace(str2); -------------------------- または -------------------------- //文章を設定 var str1:String = 'I <font size="4">love</font> you. You <u>like</u> me.'; //置換するパターン var pattern:RegExp = /<[^>]*>.*?<[^>]*>/g; //置換後の文章を取得 var str2:String = str1.replace(pattern, '_______'); //置換後の文章を出力窓に出力 trace(str2); -------------------------- この辺↓前後のページが参考になると思います。 「Adobe ActionScript 3.0 繰り返し制御文字」 http://help.adobe.com/ja_JP/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7eab.html 私は上記ページからリンクされている PDF ファイルをダウンロードして 7章と10章を熟読した上でなんとか考えて上記スクリプトを書きました。 結構アセアセにややこしいです(特に下のスクリプト2つ)。
補足
スクリプトまでご丁寧にありがとうございます。 私が書かせていただいたスクリプトの場合も、 変数bunsyoの型を xml→string と変換してから 正規表現を使った var result:String = bunsyo.replace(/ >.+< /, "_____"); trace(result); で書き換えられました。 しかし、String型ですと、テキストに入れる際にhtmlTextを使っても つまり test_txt.htmlText = result; としても <font color ="#00FFFF"></font>が色が変わるのではなく そのまま表示されてしまい困っています。 (xml型のときはちゃんと色が変わっていたのでおそらくそこが原因かと思いました) 質問の仕方が下手ですみません;