Como posso ler a quebra de linha de um valor com JavaScript e substituir todas as quebras de linha por <br />
elementos?
Exemplo:
Uma variável passada do PHP como abaixo:
"This is man.
Man like dog.
Man like to drink.
Man is the king."
Gostaria que meu resultado fosse algo assim depois que o JavaScript o converter:
"This is man<br /><br />Man like dog.<br />Man like to drink.<br /><br />Man is the king."
javascript
Jin Yong
fonte
fonte
Respostas:
Isso transformará todos os retornos em HTML
Caso você queira saber o que?: Significa. É chamado de grupo não capturante. Isso significa que o grupo de regex entre parênteses não será salvo na memória para referência posteriormente. Você pode verificar esses tópicos para obter mais informações:
https://stackoverflow.com/a/11530881/5042169 https://stackoverflow.com/a/36524555/5042169
fonte
str.replace("\n", '<br />')
(o primeiro argumento é uma sequência regular) substituirá apenas a primeira ocorrência.String#replace
seu primeiro argumento deString
para umaRegExp
instância de escape , sem sinalizadores.str.replace('\n', '<br />');
é equivalente astr.replace(new RegExp('\n'), '<br />');
str.split("\n").join("<br />")
jsperf.com/split-join-vs-replace-regex RegEx parece um pouco mais rápidoSe sua preocupação é apenas exibir quebras de linha, você pode fazer isso com CSS.
Jsfiddle: https://jsfiddle.net/5bvtL6do/2/
Nota : Preste atenção à formatação e recuo do código, pois
white-space: pre-line
exibirá todas as novas linhas (exceto a última nova linha após o texto, consulte violino).fonte
white-space: pre-wrap;
eu prefiro usowhite-space: pre-line;
(para não adicionar uma linha de ruptura final depois de tudo)Sem regex:
fonte
\\n
não corresponde a uma nova linha, porque está procurandobackslash
+n
.Isso funciona para entradas provenientes de uma área de texto
fonte
Se a resposta aceita não estiver funcionando corretamente para você, tente.
Funcionou para mim.
fonte
new RegExp('\n', 'g')
é idêntico a/\n/g
(exceto por algumas minúcias sobre o uso de literais primitivos versus seus construtores)./\n/g
como uma string!Independentemente do sistema:
fonte
Também é importante codificar o restante do texto para proteger contra possíveis ataques de injeção de script
fonte
Isso funcionou para mim quando o valor veio de um TextBox:
fonte
Para aqueles que desejam apenas permitir lances máximos 2
<br>
em uma linha, você pode usar isto:Primeira linha: pesquise
\n
OR\r\n
onde pelo menos 2 deles estejam seguidos, por exemplo\n\n\n\n
. Em seguida, substitua-o por 2br
Segunda linha: pesquise todas as únicas
\r\n
ou\n
substitua-as por<br>
fonte
se você enviar a variável do PHP, poderá obtê-la com isso antes de enviar:
fonte
str = str.replace(/\n/g, '<br>')
str = str.replace(/\n*\n/g, '<br>')
fonte
str = str.replace(/\n+/g, '<br>')
para o segundo casoNão estou respondendo a uma pergunta específica, mas tenho certeza de que isso ajudará alguém ...
Se você tiver uma saída do PHP que deseja renderizar em uma página da Web usando JavaScript (talvez o resultado de uma solicitação do Ajax) e apenas queira manter espaço em branco e quebras de linha, considere apenas colocar o texto dentro de um
<pre></pre>
bloco:fonte
Tentar
fonte