トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     改行を区切りにした split()
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ebi
Åê¹ÆNo.49704
投稿日時: 2013-3-29 20:51
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
改行を区切りにした split()
こんにちは。えびです。

テキストフィールド「FLD」に3行の文字列を入れます。
FLD.text = "A\nB\nC";


これを改行を区切りにsplit()で配列に入れようと思いましたが…
var ARY:Array = FLD.text.split("\n");
trace(ARY.length);   //出力:1

あれ?  できません。

いろいろ試して、先程とは違うテキストフィールド「RTN」に改行のみ入れ、
それを参照してsplit() したところ…
RTN.text = "\n";

var ARY:Array = FLD.text.split(RTN.text);
trace(ARY.length);   //出力:3

うまくいきました。

参照はテキストフィールド内の改行でないといけないようで、
var RTN:String = "\n";

var ARY:Array = FLD.text.split(RTN);
trace(ARY.length);   //出力:1

変数での参照では最初と同じ結果。できません。

やりたいこと(改行を区切りにsplit)は2番目の方法で可能なんですが、
もっとスマートな方法(セオリー)があるのでは? と思い質問させて頂きました。

なにとぞ、ご教示ください。┌〇



追記

「なぜsplit("\n")ではできないのか」
「なぜテキストフィールド内の改行を参照したらできたのか」
も、よろしければ、併せて。┌〇 ┌〇
野中文雄
Åê¹ÆNo.49706
投稿日時: 2013-3-29 23:39
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 改行を区切りにした split()
以下を試して、[出力]結果を確かめられるとよいでしょう。
var _str:String = "\n"
RTN.text = _str;
trace(_str.charCodeAt(0), RTN.text.charCodeAt(0));

参考: ActionScript 3.0リファレンスガイド「TextField」の「textプロパティ」の項
引用:
ebiebiさんは書きました:
いろいろ試して、先程とは違うテキストフィールド「RTN」に改行のみ入れ、
それを参照してsplit() したところ…
RTN.text = "\n";

var ARY:Array = FLD.text.split(RTN.text);
trace(ARY.length);   //出力:3

うまくいきました。
...[中略]...
「なぜsplit("\n")ではできないのか」
「なぜテキストフィールド内の改行を参照したらできたのか」
も、よろしければ、併せて。┌〇 ┌〇


----------------
 

ebi
Åê¹ÆNo.49707
投稿日時: 2013-3-30 9:12
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: 改行を区切りにした split()
ご返信ありがとうございます。

引用:

Fumioさんは書きました:
以下を試して、[出力]結果を確かめられるとよいでしょう。
var _str:String = "\n"
RTN.text = _str;
trace(_str.charCodeAt(0), RTN.text.charCodeAt(0));


簡潔! ありがとうございます。さっそく確かめました。

結果は
//出力 10 13


はー  なるほど。文字コード。
テキストフィールドの改行は \n で代入しても \r に変換されるんですね。

試しにテキストフィールド「FLD」に代入の時点で \r を使用したところ
「FLD」内でもキチンと改行され split() も無事適用されました。 スッキリです。
FLD.text = "A\r\rC";
var ARY:Array = FLD.text.split(\r);
trace(ARY.length);   //出力:3


\n と \r …んー
未だに使い分けがよく分からないのですが…

2.0までは改行挿入には newline が使えました(3.0からは使えない)

newline定数

↑こちら改めて確認したところ、newlineもキャリッジリターン(\r)ですね。
Flash内のみで使う分には \r に統一して使用、という理解で差し支えないでしょうか。
ひろゆき
Åê¹ÆNo.49709
投稿日時: 2013-3-30 12:37
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 改行を区切りにした split()
AS2.0の記事ですが、AS3.0でも流用できます。

改行コードを統一する (2)


----------------
質問する際は、回答者に具体的な情報を与えてください。

野中文雄
Åê¹ÆNo.49712
投稿日時: 2013-3-30 13:22
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 改行を区切りにした split()
TextField.textプロパティの値を扱う場合には、「\r に統一して使用」します。

ActionScript 3.0リファレンスガイド「TextField」より引用:
行は復帰文字('\r'、ASCII 13)で区切られます。

外部テキストファイルを読込む場合には、プラットフォームにより改行に用いられる文字は異なります。改行の文字を統一するには、正規表現を使うと便利です。

参考:『ActionScript 3.0プロフェッショナルガイド』p.518 (PDF)
引用:
ebiebiさんは書きました:
Flash内のみで使う分には \r に統一して使用、という理解で差し支えないでしょうか。


----------------
 

ebi
Åê¹ÆNo.49713
投稿日時: 2013-3-30 15:33
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: 改行を区切りにした split()
ひろゆきさん、ご返信ありがとうございます。

記事のご紹介ありがとうございます。拝見しました。なるほど。
プラットフォームごとに3パターンの改行があるのですね(まず、ここから…)
ややこしやぁ?

こちらの記事の改行コードを統一する関数、内容も理解でき、
参考になりましたが、最終的にラインフィード(\n)でjoinされてます。
今回の実験(?)で変数でもテキストフィールドでも
キャリッジリターン(\r)が有効だと分かったのですが、
それでもラインフィード(\n)に統一するメリットはあるのでしょうか?

あ、べつにケチをつけてるわけではありません。
ぼくなんぞはワケもわからずラインフィード(\n)を使ってましたが、
それなりの理由がおありなのかなーと思いまして…(´?`;)ゞ

なんかFlashの話題なのかやや微妙になってきましたが、
よろしければ、お教えください。

※このスレッドを参照される方へ。 環境によっては¥が\になってると思います。同じモノなので、ご注意を(共に半角の)
ebi
Åê¹ÆNo.49714
投稿日時: 2013-3-30 16:38
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: 改行を区切りにした split()
野中さん、ご返信ありがとうございます。

TextField.textプロパティの値を扱う"場合には"と言われるからには、
そうでない場合もありえるのでしょうか。
あ、いえ、それが「外部テキストファイルを読込む場合」なのでしょうけれど、
改めまして、
Flash内のみで(外部テキストなどを読み込まず)使う分には
(テキストフィールドだろうが変数だろうが)\r に統一して使用、
という理解で差し支えないでしょうか。

えー、要するにですね…
これまで2.0で何の疑いもなく使ってたnewlineが「使えない?パニック!」
だったので、ここ数日、あれこれといじくってたワケです。
ワケがわからないながらも、最初に \r ではなく \n で試し、
テキストフィールド上では改行されたので「ウム間違いない!」と確信したのが
運の尽き。見事にハマッておりましたぁ…(´?`;)ゞ
ここらで「ええぃ、うるさい!そういう事だ!差し支えない!m9(;`Д´)」と
野中さんからお墨付きを頂ければ「ハハァーありがたやー」と
安心してnewline頭を卒業 \r を使えそうなのです。(いや使えるんですが、安心して)

しかし、考えてみればsplitの区切りにnewlineを指定してもダメだった覚えが…
これまで、どうしてたんだっけ? 改行でsplitする機会がなかっただけか。


そして…

でました! 正規表現… ぐぉぉ
ちらほら目にはしてましたが、サッパリ正体がつかめないので
ひとまずスルーしていたのでした…ウーン

『ActionScript 3.0プロフェッショナルガイド』は座右にございますので
ご紹介いただいたページの2ページ前『T.3.2正規表現(RegExpクラス)』から
読ませていただきましたが…_| ̄| ...○ 現段階の頭では転がり落ちるばかり…
いや、まだ1/3しか進んでいないので順路を辿れば理解できるのかも!
とはいえ、未だ「xml? なにそれ? クリスマスじゃなくて?」って段階ですので、
どの参考書もxmlの項は「おらっちには関係ねぇやい」とばかりにスルーしてますが…ェェ

ちなみに、このサイトで「改行」で検索したら過去に自分とご対面!

変数の行を配列のように処理

「ああ、この時に改行についてもう一歩踏み込んでいたら、
 今回のハマリもなかったんだろうな」とか思うと、
スルースルーばっかりじゃな、とは思うんですがね、ナカナカ。

過去の自分もがんばってたので、がんばろうと思います。( ・`ω・´)」=3
ebi
Åê¹ÆNo.49715
投稿日時: 2013-3-30 16:56
フォーラム芸人
居住地: nagoya
投稿: 926
使用環境:
.6.8
CS6
<参考書>
・基本からしっかりわかるActionScript 3.0(既読)
・ActionScript3.0プロフェッショナルガイド(進行中)
・ActionScript3.0パフォーマンスチューニング(未読)
・ActionScript 3.0 逆引きクイックリファレンス(購入予定...
Re: 改行を区切りにした split()
もう1つ、念のため確認です。

テキストフィールドに入力されれば改行はとにかく \r!

という理解で良いのですかね?

例えば、Unix(改行コード\n)、Windows(改行コード\r\n)から
Flash内の入力テキストフィールド(input)にて改行を入力したとしても、
テキストフィールド内の改行は一律(\r)という事で。

ひろゆき
Åê¹ÆNo.49716
投稿日時: 2013-3-30 21:17
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 改行を区切りにした split()
引用:
ebiebiさんは書きました:

それでもラインフィード(\n)に統一するメリットはあるのでしょうか?

あ、べつにケチをつけてるわけではありません。
ぼくなんぞはワケもわからずラインフィード(\n)を使ってましたが、
それなりの理由がおありなのかなーと思いまして…(´?`;)ゞ

LFが一般的だから。

改行コード


----------------
質問する際は、回答者に具体的な情報を与えてください。

野中文雄
Åê¹ÆNo.49717
投稿日時: 2013-3-31 2:08
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 改行を区切りにした split()
TextField.textプロパティに"\n"を加えれば、"\r"に変換されます。ただし、文字数には気をつけた方がよいでしょう。
var _str:String = "\r\n";
var nLength:int = _str.length;
RTN.text = _str;
trace(nLength, _str.charCodeAt(nLength - 1), RTN.text.charCodeAt(nLength - 1));

すると、扱うテキストの改行が予め決まっていない場合には、どれかに統一しておく方が安心です。そして、TextFieldインスタンスに加えることも考えると、"\r"にすれば戸惑うことも少なそうです。ただし、SWFの外にテキストを渡すときは、その仕様にしたがいます。
引用:
ebiebiさんは書きました:
テキストフィールドに入力されれば改行はとにかく \r!

という理解で良いのですかね?

例えば、Unix(改行コード\n)、Windows(改行コード\r\n)から
Flash内の入力テキストフィールド(input)にて改行を入力したとしても、
テキストフィールド内の改行は一律(\r)という事で。


----------------
 

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops