0

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

“你好\r你好”

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

3 回答 3

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

于 2009-03-29T14:34:28.867 回答
1

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

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

可以工作得更好一点。

于 2009-03-29T13:41:04.143 回答
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 基本上是正确的,但我想我会尝试让它更清楚一点。

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

于 2009-03-30T23:48:02.880 回答