JavaScript로 값에서 줄 바꿈을 읽고 모든 줄 바꿈을 <br />
요소로 바꾸려면 어떻게해야합니까?
예:
아래와 같이 PHP에서 전달 된 변수 :
"This is man.
Man like dog.
Man like to drink.
Man is the king."
JavaScript가 변환 한 후 결과가 다음과 같이 보이기를 원합니다.
"This is man<br /><br />Man like dog.<br />Man like to drink.<br /><br />Man is the king."
답변
이것은 모든 수익을 HTML로 바꿉니다.
str = str.replace(/(?:\r\n|\r|\n)/g, '<br>');
? : 의미하는 것이 궁금한 경우. 이것을 비 캡처 그룹이라고합니다. 괄호 안의 정규 표현식 그룹은 나중에 참조하기 위해 메모리에 저장되지 않습니다. 자세한 내용은 다음 스레드를 확인하십시오.
https://stackoverflow.com/a/11530881/5042169
https://stackoverflow.com/a/36524555/5042169
답변
관심사가 줄 바꿈 만 표시하는 경우 CSS를 사용하여이를 수행 할 수 있습니다.
<div style="white-space: pre-line">Some test
with linebreaks</div>
JSfiddle : https://jsfiddle.net/5bvtL6do/2/
참고 : 모든 줄 바꿈 white-space: pre-line
을 표시 하므로 코드 형식 및 들여 쓰기에주의 하십시오 (텍스트 다음의 마지막 줄 바꿈 제외) 바이올린 참조).
답변
정규식없이 :
str = str.split("\n").join("<br />");
답변
이것은 텍스트 영역에서 오는 입력에 효과적입니다.
str.replace(new RegExp('\r?\n','g'), '<br />');
답변
수락 된 답변이 제대로 작동하지 않으면 시도해 볼 수 있습니다.
str.replace(new RegExp('\n','g'), '<br />')
그것은 나를 위해 일했다.
답변
시스템에 관계없이 :
my_multiline_text.replace(/$/mg,'<br>');
답변
스크립트 삽입 공격으로부터 보호하기 위해 나머지 텍스트를 인코딩하는 것도 중요합니다
function insertTextWithLineBreaks(text, targetElement) {
var textWithNormalizedLineBreaks = text.replace('\r\n', '\n');
var textParts = textWithNormalizedLineBreaks.split('\n');
for (var i = 0; i < textParts.length; i++) {
targetElement.appendChild(document.createTextNode(textParts[i]));
if (i < textParts.length - 1) {
targetElement.appendChild(document.createElement('br'));
}
}
}