フラッシュでテキストエリアなどの文字列の行数を
取得したくてそのときに改行数を数えてくれる
関数を見つけたけど、ActionScript2.0だったものを
ActionScript3.0用にしました。

テキストエリア内の改行をカウントする -indexOf-


今回は使わなかったけど、どっかで使えそうなので
メモしときますひらめき電球自由に改造して使ってください。

//文字列の改行数取得 引数に文字列
function getTextNumLines(str:String):uint {
var count:uint = 0;
var check_str:Strin;

for (var i:uint = 0; i < str.length; i++) {
check_str = str.substr(i, 1);

if (check_str == "\r") {
count++;
}
}

return count;
}
Flashのアクションスクリプトで文字が入力されるごとに
処理させる方法をメモひらめき電球

テキストエリア.addEventListener(Event.CHANGE, 処理関数);

これを使うとテキストエリアで変更が行われたら処理を
させることができます。

最初は、キーイベントで制御させようと思っていたんだけど
それは手間だなぁと思っていたので、このテクニックを
発見したときは、感動しましたニコニコ
phpで文字列の置換はstr_replaceで使ってやっているんだけど
今回は、複数あるから一行で複数文字を置換したいなぁと思って
配列に入れてやってみたらうまくいかないガーン

なんでビックリマーク参考にしていた情報が間違ってる感じあせる
そこでもう一回Google先生に聞いてみたら面白い情報を発見ひらめき電球

文字列置換はstr_replaceだけじゃない。strtrでも可能!
$str = "abc cba"; 
$search = array("abc", "cba");
$replace = array("cba", "abc");
$list = array("abc" => "cba", "cba" => "abc");

echo str_replace($search, $replace, $str);
echo "\n";
echo strtr($str, $list);
echo "\n";

これの実行結果は以下のようになります。

abc abc
cba abc


同じ文字列置換ですが実行結果が違います。
これは、strtrは置換された文字は対象外になるからです。

両方の特徴を知っておくと使い分けができますねひらめき電球
注意としてstrtrを使って置換する場合、連想配列でないやり方
だと文字列を同じにする必要があります。