Как удалить все переносы строк из строки
Я имею текст в текстовом поле (textarea) и считываю его с помощью атрибута .value.
Теперь я хотел бы удалить все переносы строк (символы, которые создаются при нажатии на Enter) из моего текста, используя метод .replace с регулярным выражением. Как мне указать перенос строки в regex?
Если это невозможно, существует ли другой способ решения этой задачи?
5 ответ(ов)
Перевод:
Переносы строк (в более точном выражении: новые строки) могут быть представлены одним из следующих вариантов: возврат каретки (CR, \r
, на старых Маках), перенос строки (LF, \n
, на Unix-системах, включая Linux) или комбинация CR и LF (\r\n
, на Windows). (В отличие от другого ответа, это не имеет никакого отношения к кодировке символов.)
Следовательно, наиболее эффективным регулярным выражением для поиска всех вариантов является
/\r?\n|\r/
Если вы хотите найти все новые строки в строке, используйте глобальный поиск,
/\r?\n|\r/g
Далее используйте метод replace
, как уже было предложено в нескольких других ответах. (Скорее всего, вы не хотите удалять новые строки, а заменять их на другие пробелы, например, на пробел, чтобы слова оставались целыми.)
Чтобы удалить символы новой строки, используйте следующий код:
yourString.replace(/\r?\n/g, '')
После этого вы можете удалить пробелы в начале и конце строки с помощью метода trim
:
yourString.trim()
Таким образом, сначала вы уберете все символы новой строки, а затем обрежете лишние пробелы.
Вы можете использовать \n
в регулярных выражениях для обозначения символов новой строки, а \r
для обозначения возврата каретки.
var str2 = str.replace(/\n|\r/g, "");
Разные операционные системы используют разные символы для обозначения конца строки, чаще всего в сочетаниях \n
и \r
. Это регулярное выражение заменит все их вариации.
Самое простое решение будет таким:
let str = '\t\n\r это \n \t \r тест \r \n пример \t \r \n';
str = str.replace(/\s+/g, ' ').trim();
console.log(str); // выводит: "это тест пример"
Метод .replace()
с регулярным выражением /\s+/g
заменяет все группы символов пробелов на одинарный пробел по всему тексту, после чего мы используем .trim()
, чтобы удалить лишние пробелы в начале и в конце строки.
К символам пробела относятся:
[ \f\n\r\t\v\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]
Чтобы удалить все символы переноса строки (как \r
, так и \n
) из строки в JavaScript, вы можете воспользоваться методом replace
и регулярным выражением. В вашем примере используется регулярное выражение /[\r\n]/g
, которое соответствует всем символам переноса строки в строке str
.
Вот пример кода:
var str = "bar\r\nbaz\nfoo";
// Удаляем все переносы строк
var result = str.replace(/[\r\n]/g, '');
console.log(result); // Вывод: "barbazfoo"
Таким образом, переменная result
будет содержать строку без символов переноса строк, и вывод будет barbazfoo
.
Как посчитать количество вхождений строки в строке?
Преобразование объекта JS в строку JSON
Как преобразовать строку, разделённую запятыми, в массив?
Как заменить символ по заданному индексу в JavaScript?
Удалить первый символ строки, если он равен 0