重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

Flash Pro CS5
AS3.0
で記述しています。




He <font color ="#00FFFF">gose</font> to library.

という文章が bunsyo という変数に入っています。
外部xmlから取得し、この型はxmlです。



ここで、
He <font color ="#00FFFF">gose</font> to library.


He <font color ="#00FFFF">_______</font> to library.
又は
He ________ to library.
のように書き換えたいと思っています。


そしてそれをテキストフィールドに入れます。
空欄を見せて考えさせ、あとで元の文章(それが答え)を表示したいと考えています。





正規表現を使い

var result:String = bunsyo.replace(/ >.+< /, "_____");
trace(result);

と記述しましたが何も変化がありませんでした。。
型がxmlなのでstringにしないと置換してくれようです;

テキストフィールドに入れる際に<font color ="#00FFFF"></font>のタグが使えなくなるので
できればそのまま置換したいのですが…
型がxmlのまま置換するにはどのようにすればいいのでしょうか。



また,もし他にもタグを識別して置換するか文字を置換or抜き出す(今回はgose)方法がありましたら教えていただきたいです。



よろしくおねがいします。

A 回答 (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_Pro …

私は上記ページからリンクされている 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型のときはちゃんと色が変わっていたのでおそらくそこが原因かと思いました)


質問の仕方が下手ですみません;

補足日時:2011/02/19 19:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!