改行コードってなんぞ?
改行に関する事で、FLASHではしばしばなんじゃこりゃ現象が起きます。
オンライン上で見るとなんともないのに、SWFデータに読み込んだテキストなんかをローカルでチェックすると、改行が1つ多い(1行置きに文章が表示される)状態になったり、逆に、改行が無くなってしまったり、といった不具合がでてきてしまった経験、ございませんでしょうか。
これらの原因の全ては『改行コード』と呼ばれるなんだかよく解らないものでして、僕自身もよく解らないのでこういうものなんだ、ぐらいの解釈ですが、要するに
『OSとかの違いによって使われている改行の種類が違う』というものらしいです。
『CR』とか『LF』とか『CR/LF』とか、聞いた事ありませんでしょうか?
具体的には以下の通り。
CR:Carriage Returnの略。 URLエンコード文字だと『%0D』、FLASHだと『\r』とかで書かれる。
LF:Line Feedの略。URLエンコード文字だと『%0A』、FLASHだと『\n』とかで書かれる
CR/LF:CRとLFが両方くっついたもの。『%0D%0A』『\r\n』という事です。
この改行コードがいくつもあるせいで『改行』と一括りに出来なくなっているために、上記のようなエラーがあれこれと出てきてしまう事があります。
あっと、ちなみにこの『 \ 』←これ、これはバックスラッシュで、Winなら「¥」、Macなら「Alt + ¥」で出てきます。
うーん、じゃあどうしよかい(゜□゜)と悩んだ結果
FLASH内部でどれかに統一してあげちゃえばいいじゃないか、となりました。
取りあえず例として『文字列の中の改行を全てLF(\n)にしてしまう』というのをやりましょう。
スクリプトはこんな感じです。
preTextData = "ここに改行を含めた文字列が入っているとします"; textData = String(preTextData.split("\r\n").join("\n").split("\r").join("\n"));
これで、textDataの中身はpreTextDataの文字列の改行コードを全て\nに変更させたものになりました。
2行目で使ったスクリプトは、簡単に説明しますとこんな感じです。
split(文字列):指定した文字列でデータを分解し、配列に格納する。
join(文字列):配列と配列の間だを、指定した文字列でつなぎ合わせて一つのストリングを作る。
よって、何をやっているかと言いますと
『改行コードCR/LF で分解し(この時点でストリングからCR/LFが消える)配列を作り、
その配列を改行コードLF で繋いで一つのストリングにする。
そのストリングを改行コードCR で分解し(この時点でストリングからCRが消える)配列を作り、
その配列を改行コードLF で繋いで一つのストリングにする』
と、なります。これでCR/LFもCRも、全てLFに置き換えられた、というわけです。
*
膨大な量の文章を変換する場合は、それなりに負荷がかかるかもしれませんので、使い所は各々で見極めが必要になると思いますが、一種のおまじないとして用いる事で、特に外部テキストの読込に関する表示エラーの50%は無き物にできるのではないでしょうか(゜□゜; )・・・多分(またか
カテゴリ
なんぞ?トラックバック(0)
このブログ記事を参照しているブログ一覧: 改行コードってなんぞ?
このブログ記事に対するトラックバックURL: http://graphicker.jp/flextime/blog/cgi-bin/mt-tb.cgi/88
コメントする