TextArea、TextFieldの改行コードは\n?

2008/10/12

こんばんは。きんくまです。
サーバから画像を取得するところでいきなりつまってしまいました。とりあえずその辺はまとまったらお知らせするとして、今回は表題の件です。

それで、サーバーとASの画像がらみで検索をかけていたら、下記のサイトが見つかりました。ありがとうございます。
Flashから画像ファイルを保存する

この例では私のやろうとしていることと逆のことをしています。
例)ASから画像取得→サーバーで画像保存。
私)サーバーで画像取得→保存しないでASに渡す→ASでBitmap化

ですが、とりあえずサンプルを試そうとしました。するとこんな感じにコピーされます。

   1. package {
   2.   import flash.display.Sprite;
   3.   import flash.display.Bitmap;
   4.   import flash.display.BitmapData;
   5.   import flash.events.Event;
以下略

このままのソースだと各行の先頭の行番号が邪魔なので、動きません。
それを消すようにしたいと思って作ったのが上のswfです。

使い方
1.入力文字列にさっきの文字をペースト
2.正規表現に以下を入力

rs*d+.s|^s*d+.s

3.置換文字列に以下を入力

n

4.置換ボタンを押す。

以上です。

それで、このサンプルを作っててわかったことなんですが、TextArea、TextFieldの改行コードってrなんですね。
たとえば、

var s:String = "anb";
var tf:TextField = new TextField();
tf.text = s;
s = tf.text;

とかやると普通は、s = "anb"とか思いますよね?だけどこれだと正規表現でnでひっかからなかったんです。なんかテキストエリアにつっこんだときに自動的にnはrに置き換わってしまっているんです。
最初それがわからなくて困ってしまいました。もちろんTextFieldなんかにつっこまなければ、勝手におきかわることもないんでnでひっかかります。

今回のソースは以下のものです。

func_btn.addEventListener(MouseEvent.CLICK, replace);

function replace(e:MouseEvent):void
{
  var s:String = input_txt.text;
  var reg:RegExp = new RegExp(reg_txt.text, "gi");
  var s2:String = getReplaceStr();
  s = s.replace(reg, s2);
  input_txt.text = s;
}

function getReplaceStr():String
{
  var s:String = replace_txt.text;
  s = s.replace(/\r|\n|\r\n/gi, "n");
  return s;
}

それで、getReplaceStrのところなんですが、置換文字列に、nとかrをスクリプトに直接書いた場合、きちんと改行の動作をします。だけど、TextFieldから拾ってきたものをそのままreplaceの第二引数にもってくるとうまく動作しなかったので、こんな感じにしています。って、文章だとよくわかんないと思いますけど、、。

今回はここまで。

LINEで送る
Pocket

自作iPhoneアプリ 好評発売中!
フォルメモ - シンプルなフォルダつきメモ帳
ジッピー電卓 - 消費税や割引もサクサク計算!

ページトップへ戻る