#javascript #html #replace #newline
#javascript #HTML #заменить #новая строка
Вопрос:
Когда текст на веб-странице переносится на следующую строку, потому что он попадает в конец вашего шаблона, это создает скрытую новую строку в коде, которая отличается от <br>
?
Я пытаюсь сделать a .replace()
в Javascript, но он не находит фразы, занимающие две строки. Есть ли какой-нибудь способ обойти это, чтобы мой код Javascript работал?
Комментарии:
1. Нет, не совсем. Можете ли вы опубликовать свой JS?
2. В моих тестах
replace()
, похоже, перенос строк не заботит и не влияет на него. Можете ли вы опубликовать свой репрезентативный пример кода на JS Fiddle или аналогичный?
Ответ №1:
Нет. Перенос слов внутри браузера (или даже внутри отдельного элемента) не приводит к вставке новых строк в разметку.
Также на самом деле нет хорошего способа обнаружить перенос слов в JavaScript.
Возможно, вы захотите опубликовать еще один вопрос со своей целью, чтобы мы могли внести предложения о том, как достичь того, чего вы действительно хотите.
Ответ №2:
Перевод строки ( n
или <br />
) — это не то же самое, что автоматический перенос текста механизмом компоновки текста. n
Или <br />
заставляет механизм компоновки переносить строку и обнаруживается как символ ( n
) или тег ( <br />
), но автоматический перенос не создает новый символ или тег. Вы можете только проверить высоту контейнера, чтобы угадать, имеете ли вы дело с автоматически переносимым текстом или нет.
Комментарии:
1. Символ новой строки
n
в разметке не «[заставляет] механизм компоновки переносить строку», он игнорируется. В HTML пробелы сворачиваются в один пробел, если он не находится внутри элемента PRE.2. @Rob Да, этот конкретный пример был неуместен в контексте HTML, следовало бы пояснить, что это пример для разрывов строк и механизмов компоновки в целом.
Ответ №3:
Включите пробелы в часть вашего выражения:
s.replace(/stuff on line1[s] stuff on line 2/, 'replacement');
Или просто символы n
новой строки и r
:
s.replace(/stuff on line1[\n\r] stuff on line 2/, 'replacement');
Существует многострочный флаг ( /m
), но, как сообщается, он не является универсальным.