Каково регулярное выражение (используется в actionscript) для поиска первой новой строки (\ n) в тексте? - PullRequest
1 голос
/ 09 июля 2010

Какое регулярное выражение используется для поиска первой новой строки (\n) в тексте (используется для поиска и удаления новой строки)?Я использую регулярное выражение в ActionScript и пробовал

ta.text = ta.text.replace(/\n*/,'') 

, но оно не работает

Спасибо

Ответы [ 2 ]

2 голосов
/ 10 июля 2010

Вы используете регулярное выражение \n*, которое соответствует первому вхождению нуля (!) Или более символов перевода строки. Таким образом, первое совпадение этого регулярного выражения всегда в самом начале строки. Если строка начинается с символов перевода строки, они будут сопоставлены. Если строка начинается с чего-то еще, строка нулевой длины в начале регулярного выражения будет соответствовать.

Используйте \n, чтобы соответствовать символу перевода первой строки. Используйте \n+, чтобы соответствовать первой последовательности символов перевода строки. Используйте [\r\n]+ для соответствия первой последовательности разрывов строк, независимо от используемого стиля разрывов строк (только LF, CRLF и т. Д.). Используйте \r?\n, чтобы сопоставить один разрыв строки как только LF или CRLF.

В вашем коде ActionScript используйте две косые черты, чтобы разделить регулярное выражение, которое вы хотите использовать:

ta.text = ta.text.replace(/[\r\n]+/,'');
0 голосов
/ 09 июля 2010

Только что проверил, и у меня получилось:

ta.text = ta.text.replace("\n",'');


Мой фактический код был (вырезан и вставлен):
var testString:String = "Hello\nWorld";
trace(testString);
testString = testString.replace("\n", '');
trace(testString);

Который дал результат:

Hello
World
HelloWorld


Кроме того, вы можете определить шаблон в соответствии с тем, что вы пытались:
var pattern:RegExp = /AB\*C/;

И это тоже работает. Измененный код станет:

var pattern:RegExp = /\n/;
var testString:String = "Hello\nWorld";
trace(testString);
testString = testString.replace(pattern, '');
trace(testString);

Обратите внимание, что приведенный выше код заменяет только первый экземпляр символа новой строки (как вы и просили). Чтобы сделать больше, потребуется либо рекурсивный вызов функции замены, либо более сложный RegExp.

Надеюсь, это поможет,

- gMale

РЕДАКТИРОВАТЬ: учитывая обсуждение комментариев ниже, попробуйте поработать с одним из этих событий, вместо этого:

  • change Отправляется, когда текст в элементе управления TextArea изменяется в результате пользовательского ввода.
  • dataChange Отправляется при изменении свойства данных.
  • textInput Отправляется, когда пользователь вводит, удаляет или вставляет текст в элемент управления.
...