У меня есть текст в текстовой области, и я прочитал его, используя атрибут .value.
Теперь я хотел бы удалить все Enterразрывы строк (символ, который появляется при нажатии ) из моего текста, теперь использующего .replace с регулярным выражением, но как я могу указать разрыв строки в регулярном выражении?
Если это невозможно, есть ли другой путь?
javascript
regex
string
Wingblade
источник
источник
Ответы:
Это, вероятно, часто задаваемые вопросы. В любом случае, разрывы строк (лучше: переводы строк) могут быть одним из следующих: возврат каретки (CR,
\r
на старых Mac), перевод строки (LF\n
, на Unix, включая Linux) или CR с последующим LF (\r\n
на WinDOS). (В отличие от другого ответа, это не имеет ничего общего с кодировкой символов.)Следовательно, наиболее эффективный
RegExp
литерал для соответствия всем вариантамЕсли вы хотите сопоставить все новые строки в строке, используйте глобальное совпадение,
соответственно. Затем перейдите к
replace
методу, предложенному в нескольких других ответах. (Возможно, вы не хотите удалять символы новой строки, но заменяете их другими пробелами, например символом пробела, чтобы слова оставались нетронутыми.)источник
\u000a
or\n
, который является переводом строки;\u000d
или\r
- возврат каретки;\u2028
разделитель строк; и\u2029
разделитель абзацев. Однако на практике регулярное выражение, которое вы разместили, является достаточным в большинстве случаев..value
динамической установке текстовой области , напримерtextarea.value = 'a\u2029b'; textarea.value.charAt(1) == '\u2029'; // true
. Но это, вероятно, крайний случай - как я уже сказал, в большинстве случаев достаточно регулярного выражения.То, как вы найдете разрыв строки, зависит от кодировки операционной системы. Windows была бы
\r\n
, но Linux просто использует,\n
а Apple использует\r
.Я нашел это в разрывах строк JavaScript :
Это должно удалить все виды разрывов строк.
источник
\r\n
и\n
и\r
лучше , чем просто/[\n\r]/g
? Конечно, это медленнее, чем должно быть, так как нужно только проверить каждый символ на соответствие двум возможным вариантам.String.trim()
удаляет пробелы в начале и конце строк ... включая переводы строк.Вот пример скрипки: http://jsfiddle.net/BLs8u/
НОТА! он обрезает только начало и конец строки, а не разрывы строк или пробелы в середине строки.
источник
Вы можете использовать
\n
в регулярных выражениях для перевода строки и\r
возврата каретки.Различные операционные системы используют разные окончания строки, с различными сочетаниями
\n
и\r
. Это регулярное выражение заменит их всех.источник
/\n|\r/g
более эффективно написано/[\n\r]/g
или даже/[\n\r]+/g
. Избегайте чередования, если оно вам абсолютно не нужно.Если вы хотите удалить все управляющие символы, включая CR и LF, вы можете использовать это:
Это удалит все непечатаемые символы. Это все символы НЕ в пределах ASCII HEX пространства
0x20-0x7E
. Не стесняйтесь изменять диапазон HEX по мере необходимости.источник
Самое простое решение было бы:
.replace()
с помощью/\s+/g
регулярного выражения заменяет все группы символов пробелов на один пробел во всей строке, то мы.trim()
удаляем все лишние пробелы до и после текста.Считаются пробелами:
[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
источник
str = str.replace(/\s+/g, ' ').trim();
источник
Чтобы удалить символы новой строки, используйте это:
Затем вы можете обрезать строку, чтобы удалить начальные и конечные пробелы:
источник
Ответ, предоставленный PointedEars, - это все, что нужно большинству из нас. Но, следуя ответу Матиаса Биненса, я отправился в путешествие по Википедии и нашел его: https://en.wikipedia.org/wiki/Newline .
Ниже приводится функция, которая реализует все, что вышеупомянутая вики-страница считает «новой строкой» во время этого ответа.
Если что-то не подходит для вашего случая, просто удалите это. Кроме того, если вы ищете производительность, это может быть не так, но для быстрого инструмента, который выполняет работу в любом случае, это должно быть полезно.
источник
\R
есть «все» переводы строки. Во-вторых - почему бы простоsomeString.replace(new RegExp(lineTerminators.join('|')), '');
replace()
о том,lineTerminators
что существовало в строке, из соображений производительности.Перевод строки в регулярном выражении - это \ n, поэтому ваш скрипт будет
источник
Я добавляю свой ответ, это просто дополнение к вышеприведенному, так как для меня я попробовал все параметры / n, и он не работал, я увидел, что мой текст идет с сервера с двойной косой чертой, поэтому я использовал это:
источник
ИСПОЛЬЗУЙТЕ ЭТУ ФУНКЦИЮ НИЖЕ И ДЕЛАЙТЕ СВОЮ ЖИЗНЬ ПРОСТО
Самый простой подход - использовать регулярные выражения для обнаружения и замены новых строк в строке. В этом случае мы используем функцию replace вместе со строкой для замены на, которая в нашем случае является пустой строкой.
В вышеприведенном выражении g и m для глобальных и многострочных флагов
источник
Попробуйте следующий код. Работает на всех платформах.
источник
На Mac, просто используйте
\n
в регулярном выражении, чтобы соответствовать разрывы строк. Таким образом, код будетstring.replace(/\n/g, '')
: ps: g означает, что соответствует всем, а не только первому.На окнах это будет
\r\n
.источник