Вопрос

Когда я создаю TextField в AS3 с многострочным значением true и приравниваю текст к следующему:

"Привет\р хола"

Я не могу получить позицию индекса с помощью функции 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
Это было полезно?

Решение

После ответа Микко я попробовал:

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

textField.text = "test \r test";

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

Этот код отслеживает:

result>5

...Как и ожидалось.

Если это по-прежнему не работает для вас, сначала попробуйте найти другой символ, кроме , если это работает, попробуйте также найти .Возможно, перевод строки как-то изменится.(какая у вас ОС?)

Другие советы

Мне кажется, вы пытаетесь получить индекс TextField вместо интересующего вас TextField.text.

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

мог бы работать немного лучше.

Итак, обо всем по порядку,

Вы не создали экземпляр своего текстового поля, вы просто сделали ссылку.

Во-вторых, indexOf доступен не классу TextField, а классу String, поэтому используйте следующее, и у вас больше не будет проблем.У меня это отлично прослеживается.

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

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

По сути, Тео все правильно сказал, но я подумал, что попробую сделать это немного более ясным.

Надеюсь, что я смогу помочь.Также я бы посоветовал проверить регулярные выражения, которые позволяют легко найти символы пробелов или любой другой шаблон, который вы только можете придумать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top