Actionscript indexOf问题

时间:2009-03-29 13:34:07

标签: flash actionscript-3 carriage-return indexof

当我在AS3中创建一个Textline,多行设置为true并将文本等同于:

“Hola \ r hola”

我无法使用indexOf函数检索\ r \ n的索引位置,它总是返回-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

3 个答案:

答案 0 :(得分:2)

按照Mikko的回答,我试了一下:

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。也许换行符会以某种方式变换。 (你在哪个操作系统?)

答案 1 :(得分:1)

在我看来,您正在尝试获取TextField的索引,而不是您感兴趣的TextField.text。

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

可以更好一点。

答案 2 :(得分:1)

好的,首先要做的事情,

您尚未实例化您的文本字段,您只是作了参考。

其次,indexOf不可用于TextField类,而是String类,因此请使用以下内容,您将不再有任何问题。它对我来说很好。

var txt:TextField = new TextField();
addChild(txt);
txt.multiline = true;
txt.text = "Hola \r hola";

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

Theo基本上是正确的,但我想我会试着让它更清晰一点。

希望我能提供帮助。此外,我建议您查看正则表达式,这些表达式可以轻松找到空白字符或您能想到的任何其他模式。