2009-03-29 7 views
0

私がtrueに設定され、複数行でAS3でTextFieldを作成し、言うために、テキストを同一視する:のActionScriptのindexOf問題

「はいはい\ rをはいはい」

私は、\ Rのインデックス位置を取得することができませんindexOf関数を使用すると常に-1を返します

私が間違っていることを誰かが知っていますか?

var txt:TextField; 
txt.multiline = true; 

txt.text = "Hola \r hola"; 

//txt now renders fine with the line break 

trace(txt.indexOf("\r")); //Returns -1, should return the valid index of \r in txt 

答えて

2

ミッコの答えに続いて、私はそれを試して与えた:

var textField:TextField = addChild(new TextField()) as TextField; 
textField.multiline = true; 

textField.text = "test \r test"; 

trace("result>" + textField.text.indexOf("\r")); 

このコードはトレース:

result>5 

...期待と同じように。

それでもうまくいかない場合は、\ r以外の文字を最初に検索してください。これが有効な場合は、\ nも検索してみてください。たぶん、改行がどうにか変換されるかもしれません。 (これはOSあなたが上にある?)

+0

私のクイック・リスポンスをよく書いていただき、ありがとうございます。 :) –

+0

おかげで、その1つは、愚かなエラーを作り、何もうまくいかない時代です。悪い私。今すぐ動作します。 –

1

はあなたが興味を持っていることのTextFieldのインデックスの代わりに、TextField.textを取得しようとしているように私には見える。

trace(txt.text.indexOf("\r")); 

少し良く仕事ができます。

+0

戻ってくれてありがとう、私もそれを試みたが、それはまだ動作しません... –

+0

ブライアンは、txt.text文字列を返しますか?確かに、私はテキストを書いて、もう少し明確にすることができましたが、トレース線は正しいです。 –

+0

それはそうですが、toString()を使用します。初心者には非常に便利なオートコンプリートポップアップを手に入れることができました。彼は私の考えでは完了の助けを借りてこれをずっと前に考え出していたでしょう。 –

1

[OK]をので、最初のものは最初、

あなたのテキストフィールドをインスタンス化していない、あなたは、単に参照を作りました。

第2に、indexOfはTextFieldクラスでは使用できませんが、Stringクラスには使用できません。したがって、次のコードを使用しても問題は発生しません。それは私にとってうまくいく。

Theoは本質的に正しいですが、私はもう少し明確にしようと考えました。

私が助けてくれることを願っています。また、空白文字や他のパターンを見つける簡単な方法がある正規表現を調べることをお勧めします。

+0

Brian、indexOfはTextFieldクラスでは使用できませんが、txt.textはStringを返すので、Stringに再度変換する必要はありません。ここをクリックしてください:http://help.adobe.com/jp/AS3LCR/Flash_10.0/flash/text/TextField.html#text –

+0

私はそれが文字列であることを知っていますが、利用可能なプロパティとメソッドを示す自動補完ボックスのポップアップが表示されます。それはtjamesを助けると考えました。 –

関連する問題