flash builder 4 について


前提になりそうな知識がないため、非常に苦労しています。
お手すきな方、お助けください。

TextAreaのテキスト「昔々あるところにおじいさんがすんでいました」から、
「おじいさん」を「おばあさん」に置換したいんです。

どのようにして置換したらよいでしょうか。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/09/19 12:50:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:yasu-log No.3

回答回数30ベストアンサー獲得回数11

ポイント100pt

ActionScriptで文字列を置換する、という質問だと想定してお答えします。

一応、真面目な回答です。

// TextAreaのidを「textArea」と仮定し予め次の文言が表示されているとします。
// textArea.text = "昔々あるところにおじいさんがすんでいました";

// 文字列の置換は次の通り
var str:String = textArea.text;
str = str.split("おじいさん").join("おばあさん");
trace(str); // 「昔々あるところにおばあさんがすんでいました」と出力される

// TextAreaに反映する
textArea.text = str; //置換されたテキストがTextAreaに表示される

※こういった文字列の操作はActionScriptの基礎となります。Flash Builderでコンテンツやアプリを作られる場合はこの他にもたくさんの基礎知識が必要になると思うので、一度ActionScriptやFlash Builderの入門書を勉強されたほうが、手っ取り早い気がします。

http://www.amazon.co.jp/dp/4839934061

※またFlexにはユーザーコミュニティがあり、Flexの質問ははてなQAでするよりも的確な答えが得られるでしょう。

http://www.fxug.net/

※FlashやActionScriptの質問で、サンプルスクリプトを欲しいと質問するのはNGにあたる場合があるので気をつけましょう。

http://www.fumiononaka.com/TechNotes/NGWords.html#Su

id:kia_44

※こういった文字列の操作はActionScriptの基礎となります。

この文字列操作についてがまったくみつけられず質問にいたりました。

flash builder 4の操作から覚えないといけないので、一通り書いてある本になってしまいました。

どうやらFlex3と FlashBuilder4では大きく変わった部分があるらしく、Flex3のソースがうまく動かせませんでした。

変換する場所などが理解できてないので当然です。

flash builder 4のお試し版を使ってるんですが、あまり情報がない状態。

あまり注目されていないいんでしょうか。

理解できる説明を4~5時間ネット検索しても見当たらず、質問したしだいです。

2010/09/19 12:00:56

その他の回答2件)

id:kaiawase No.1

回答回数13ベストアンサー獲得回数0

すみません、質問の意味がわかりませんでした。

http://q.hatena.ne.jp

id:kia_44

すみません、回答された意味がわかりませんでした。

2010/09/18 23:59:02
id:mkonomi No.2

回答回数651ベストアンサー獲得回数45

ポイント20pt

flash builder 4 を知らないので亜流の方法しかコメントできませんが、

確実に実行できると思います。

【方法】

①メモ帳を起動し新規ファイルを開く

Ctrl+N

 

②flash builder 4 のTextAreaのテキスト全てを選択してコピーする

Ctrl+A、Ctrl+C

 

③メモ帳へペーストする

Ctrl+V

 

④メモ帳での置換する

 

⑤メモ帳のテキスト全てを選択してコピーする

Ctrl+A、Ctrl+C

 

⑥flash builder 4 のTextAreaへペーストする

Ctrl+V

 

《メモ帳での置換》

文字列を検索して置換するには

[編集] メニューの [置換] をクリックします。

[検索する文字列] に検索する文字または単語を入力します。

置換する文字列を [置換後の文字列] ボックスに入力します。

すべての文字列を一度に置換するには、[すべて置換] をクリックします。

一度に 1 つのインスタンスを置換するには、[次を検索] をクリックし、

[置換] をクリックします。

 

id:kia_44

http://www.adobe.com/jp/products/flashbuilder/?sdid=FDOZG

↑これなんです。

確かに、メモ帳は便利なんですが、今回はメモ帳は使えません。

2010/09/19 03:47:02
id:yasu-log No.3

回答回数30ベストアンサー獲得回数11ここでベストアンサー

ポイント100pt

ActionScriptで文字列を置換する、という質問だと想定してお答えします。

一応、真面目な回答です。

// TextAreaのidを「textArea」と仮定し予め次の文言が表示されているとします。
// textArea.text = "昔々あるところにおじいさんがすんでいました";

// 文字列の置換は次の通り
var str:String = textArea.text;
str = str.split("おじいさん").join("おばあさん");
trace(str); // 「昔々あるところにおばあさんがすんでいました」と出力される

// TextAreaに反映する
textArea.text = str; //置換されたテキストがTextAreaに表示される

※こういった文字列の操作はActionScriptの基礎となります。Flash Builderでコンテンツやアプリを作られる場合はこの他にもたくさんの基礎知識が必要になると思うので、一度ActionScriptやFlash Builderの入門書を勉強されたほうが、手っ取り早い気がします。

http://www.amazon.co.jp/dp/4839934061

※またFlexにはユーザーコミュニティがあり、Flexの質問ははてなQAでするよりも的確な答えが得られるでしょう。

http://www.fxug.net/

※FlashやActionScriptの質問で、サンプルスクリプトを欲しいと質問するのはNGにあたる場合があるので気をつけましょう。

http://www.fumiononaka.com/TechNotes/NGWords.html#Su

id:kia_44

※こういった文字列の操作はActionScriptの基礎となります。

この文字列操作についてがまったくみつけられず質問にいたりました。

flash builder 4の操作から覚えないといけないので、一通り書いてある本になってしまいました。

どうやらFlex3と FlashBuilder4では大きく変わった部分があるらしく、Flex3のソースがうまく動かせませんでした。

変換する場所などが理解できてないので当然です。

flash builder 4のお試し版を使ってるんですが、あまり情報がない状態。

あまり注目されていないいんでしょうか。

理解できる説明を4~5時間ネット検索しても見当たらず、質問したしだいです。

2010/09/19 12:00:56
  • id:mkonomi
    2の回答者です。
     
    flash builder 4 では
    標準的なショートカット
    Ctrl+A、Ctrl+C、Ctrl+V 
    が利用可能と想定しました。
     
     
     
     
  • id:kia_44
    たぶん質問がまずかったものだと思います。

    ActionScriptを使うらしいのですが、
    ActionScriptで置換する方法がわかりません。
    http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/String.htmlこの辺が近いんでしょうが、何を言ってるんだかわからない状態です。

    どなたか、簡単なサンプルをください。感覚がつかめたらいじり倒します。
  • id:mkonomi
     
    >確かに、メモ帳は便利なんですが、今回はメモ帳は使えません。
    「メモ帳は使えません」(利用不可能:使おうとしても使えない)
    ではなく、
    「メモ帳は使いません」(自分自身の意思で使わない)
    ですね。
     
    flash builder 4 自身の機能で置換されたいということは、
    最初から理解はできています。
    それが分かるまでのつなぎにと提案いたしました。
     
  • id:chinjuh
    わたしゃFlash basicしか持っていないので状況が違うかもしれないんですが
    インスタンスにスクリプトを埋め込んじゃったりすると、
    スクリプト全体を一覧することができないんじゃないかと想像するんですよ。
    それだとガーッとコピーしてペッとメモ帳に貼ることはできないし、
    mkonomiさんの方法はダメなのかなって。
     
    だから偉い人たちはインスタンスにスクリプト書いちゃったりしないで、
    インスタンス名をつけてテキストエリアから全部やるんだろうな、
    とかなんとかぶつぶつ(ごめんなさいシステム屋の素質皆無なんでうまく説明できない)。
  • id:kia_44
    なんだか皆さんに不快な思いさせたかもしれません。ごめんなさい。

    何がわかってないんだかわからない状態なので、質問が非常にあいまいだったんだと思います。

    プログラムソースを置換したいのではなく、インポートしたテキストにたいして
    定型処理として置換をおこないたいのです。

    なので今回、メモ帳などのテキストエディタで置換はできないんです。という意味でした。





  • id:pacochi
    質問者さんが参考にしていると思しきサンプルに即して書いていたら、既に有用な回答が出ていたみたいなのでコメント欄で。

    private function replaceMainText(searchStr:String, replaceStr:String):void
    {
    var pattern:RegExp = new RegExp(searchStr.replace(/([\^\$\\\.\*\+\?\|\{\}\[\]\(\)])/g, "\\$1"), "g");
    mainTextField.text = mainTextField.text.replace(pattern, replaceStr);
    // AS3 より前ならこうしてました
    // mainTextField.text = mainTextField.text.split(searchStr).join(replaceStr);
    }


    <mx:Button label="Replace" id="replaceBtn" click="replaceMainText('おじいさん', 'おばあさん')" />
  • id:kia_44
    pacochiさんの例がなかなかわかりません。
    とくに(/([\^\$\\\.\*\+\?\|\{\}\[\]\(\)])/g, "\\$1")って…。
    ActionScriptだけの本買ってみたいと思います。

  • id:pacochi
    混乱させてすみません。
    置換する命令が備わっているならちゃんと置換する命令を使った方が良いかなと思ってこういった書き方にしましたが、その辺にこだわりが無ければいるか賞の回答で問題ないと思います。


    かといって投げっぱなしもどうかと思うので、説明がうまくできる自信がありませんが、解説させていただきます。

    AS3 になって、String で replace() が使えるようになりました。
    http://www.adobe.com/livedocs/flex/3_jp/langref/String.html#replace()
    文字列の置換の命令がデフォルトで備わったということです。たとえば、

    var str:String = "昔々あるところにおじいさんがすんでいました";
    str = str.replace(/おじいさん/g, "おばあさん");

    これで、str が「昔々あるところにおばあさんがすんでいました」になります。

    ただ、replace() は正規表現を使って置換するので、それだと困るかと思い、正規表現のメタ文字をエスケープしました。それが
    >とくに(/([\^\$\\\.\*\+\?\|\{\}\[\]\(\)])/g, "\\$1")って…。
    この部分です。

    正規表現というのは、柔軟な検索・置換をするのに使う仕組みです。
    使いこなすと特定の日付だけを抽出したり、「おじいさん」「お爺さん」「お祖父さん」などの文字列をを一気に「おばあさん」に置換できたりと、色々便利です。
    便利なのですが、単純な置換をしたい場合には煩わしいので、私の書いた例では無効化しています。

    メタ文字というのは、正規表現で一種の命令として扱われる特殊な文字の事です。
    エスケープというのは、その特殊な文字を、命令ではなくを普通の文字として扱う、言い換えると無効化する行為の事です。

    正規表現は、テキストエディタを作るのに必須な知識ではありませんが、知っていると色々と幅が広がります。
    余裕ができたらネットや書籍などで調べてみて下さい。


    単純な文字列置換を実現するなら、このコメントのはじめに書いた通り、yasu-log さんの回答や、もしくは私が先ほど書いたサンプルのコメントアウトされている部分で使われている方法の方が簡単です。
    (mainTextField.text = mainTextField.text.split(searchStr).join(replaceStr); という部分です。)

    この部分は、一旦「おじいさん」で区切った配列を作り、それを再び「おばあさん」で繋げるという作業をしています。
    結果的に文字列の置換ができます。

    詳しい仕組みを知らなくても気軽に使えるので、今回の場合はこちらの方法の方で良いと思います。


    それと、私が書いたサンプルは
    http://www.adobe.com/jp/devnet/air/flex/quickstart/building_text_editor.html
    のサンプル、TextEditor.mxml に付け足しする形で書かれています。

    実際に試していただく場合は、最後の一行、
    <mx:Button label="Replace" id="replaceBtn" click="replaceMainText('おじいさん', 'おばあさん')" />
    という行だけ、他の mx:Button が並んでいるところに付け足して下さい。

    他、
    private function replaceMainText(searchStr:String, replaceStr:String):void
    {

    }
    の部分は、mx:Script の中にスクリプトとして書いて下さい。


    あと、私は flash builder 4 は持っていません。(AS の検証は FlashDevelop で行いました。)
    なので、ツール特有の操作は分かりません。
  • id:chinjuh
    あー、なるほど。理解しました。
    よけいな事書いてすみません。

    >プログラムソースを置換したいのではなく、インポートしたテキストにたいして
    定型処理として置換をおこないたいのです。
  • id:kia_44
    pacochiさん、詳しい解説ありがとうございます。
    全く持ってド素人なので、公式サイトの書き方だと何を言ってるんだかさっぱりわかりませんでした。
    慣れてくれば読める用にはなるんでしょうけど。

    質問する段階では、AS3で書くことすらわかってませんでした。
    本には「ここにスクリプトをかく」といった表現だったもので…。
    質問後、確認しながらAS3でかくことがわかったという流れです。

    現在はAS3にどんな道具(命令)があるのか、を一通り把握する段階です。
    こんな状態なので質問自体が変な質問に。
    yasu-logさんがエスパー回答してくれたので助かりました。

    chinjuhさんの回答も、この質問に対してはあたりではありますよね。
    あまりポイント付けませんでしたが、回答ありがとうございました。

    お返しともいえませんが、メモ帳小ネタを。

    WEBページにある表をExcelに貼付ける際に、うまくいかない場合、
    一度メモ帳に貼付けてそれをさらにクリップボードへ。
    そしてExcelに貼付けるときれいにいく場合があります。

    HTMLからメモ帳へ移行する際に、クリップボードから装飾が取り除かれ、
    それぞれのフィールドの区切りをタブにして出力されます。
    メモ帳からExcelに貼付ける際に、タブは区切り点として認識されるためこのようなことが起こるようです。

    取り合えず、テキスト操作のあたりから〜と思って始めたのですが、なかなか進みません。
    回答する側に回れるよう、がんばって勉強してみます。

  • id:kia_44
    結果報告です。

    http://memo.bz/flas4/fl-memo1.php

    とりあえず、書き方などは理解が進みました。
    公式などにあるリファレンスもどこを変えればよいというのがわかると使えるようになりました。
    やはり動くソースがあると、理解しやすいですね。

    しかし、MSDNもそうですが、Adobe公式の説明書き。非常にわかりにくくて嫌いです;;

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません