• ベストアンサー

文章の改行数を取得する

Flash 8を使用しています。 テキストファイルから文章を取得して、それを変数に代入するんですが、 代入された文章が何回改行されているかを 取得するにはどうすればいいのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

そう言えば, 私も他の方にその方法が聞いてみたいと思っていたのです。 以下は私なりの方法です。 大筋は, テキストフィールドの文字列を改行コードで区切って(splitして), 区切られたそれぞれの文字列を配列の要素にし, 配列の要素の個数を求めれば,行数が出るので, 行数から1を引いて改行の個数を求める。 という方法です。 つまり,#1の方の「改行コードの個数を調べる」の具体的方法です。 しかし,困ったことに,改行コードは "\n" と "\r" の2種類あります。 Windows環境でテキスト入力のテキストフィールドに, 手入力で改行を入れると "\r" になります。 しかし,スクリプトの newline で改行を入れたり, 外部テキストをロードしたり, Macからの入力を考えると,"\n" になります。 全体的に主流は "\n" です。 だから,まどろっこしいですが, "\r" と "\n" でそれぞれ区切った2つの配列を用意し, それぞれの個数を求め,それを足して,改行の個数を求めるという方法です。 ステージ上に memo という "インスタンス名" のテキスト入力のテキストフィールドを用意します。 そして,ボタンシンボルを用意し,ボタンをクリックしたときに個数を調べるスクリプトです。 変数の型宣言などは省略しています。 ----------------------------------- on (release) { //配列 memoSpl1 を作成 memoSpl1 = new Array(); //memo.text を "\n"で区切って配列に代入 memoSpl1 = _root.memo.text.split("\r"); //改行個数を算出 nLine1 = memoSpl1.length-1; //配列 memoSpl2 を作成 memoSpl2 = new Array(); //memo.text を "\n"で区切って配列に代入 memoSpl2 = _root.memo.text.split("\n"); //改行個数を算出 nLine2 = memoSpl2.length-1; //上の改行個数を加算 nLine = nLine1+nLine2; trace(nLine); } ------------------------------------ これで,ムービープレビューし,ボタンをクリックしたとき, memo という "インスタンス名" のテキスト入力のテキストフィールド内の改行の個数が trece されます。 他に良い方法はないものかとたまに考えてはみるのですが, 良い悪いは別にして,一応上のような方法で実際には調べられるので 実際に使っている方法です。 --余談:ちなみに上の方法の発展---------------- "\n" や "\r" に限定した物ではなく, 文字列1 をある 文字列2 で区切って配列の要素とし, 区切った要素をそのまま連結させると, その 文字列1 の中から 文字列2 を一括削除するということもできます。 それのさらに応用で, 要素を連結させる前に各要素間に違う文字列を挿入してやると,文字列置換もできます。 Flash の配列は前もって要素の個数を宣言しなくて良いので,すごく便利です。 しかし,上の方法で改行の個数を調べると言うのは,良いのか悪いのかわかりません。 もっと簡単な方法もあるようには思います。 できる自信はありますが,方法的に良い方法かどうかは全く自信なしです。

is_may
質問者

お礼

できました! ありがとうございました!

その他の回答 (1)

回答No.1

フラッシュを直接触ったことがないのですが… テキストの改行文字がコードで入っている筈ですので、 その回数を数えてやればいいのではないでしょうか?

is_may
質問者

お礼

解決しました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう