[javascript] JavaScript 문자열 개행 문자?

\n모든 플랫폼을위한 자바 스크립트의 보편적 인 개행 문자 순서는? 그렇지 않은 경우 현재 환경의 문자를 어떻게 결정합니까?

HTML 개행 요소 ( <BR/>) 에 대해 묻지 않습니다 . JavaScript 문자열 내에서 사용되는 줄 바꿈 문자 시퀀스에 대해 묻고 있습니다.



답변

방금이 바보 같은 JavaScript를 사용하여 몇 가지 브라우저를 테스트했습니다.

function log_newline(msg, test_value) {
  if (!test_value) { 
    test_value = document.getElementById('test').value;
  }
  console.log(msg + ': ' + (test_value.match(/\r/) ? 'CR' : '')
              + ' ' + (test_value.match(/\n/) ? 'LF' : ''));
}

log_newline('HTML source');
log_newline('JS string', "foo\nbar");
log_newline('JS template literal', `bar
baz`);
<textarea id="test" name="test">

</textarea>

Windows의 IE8 및 Opera 9가 사용 \r\n됩니다. 내가 테스트 한 다른 모든 브라우저 (Windows의 경우 Safari 4 및 Firefox 3.5, Linux의 경우 Firefox 3.0)는을 사용 \n합니다. \nIE와 Opera가 값을 \r\n내부적 으로 다시 변환하지만 값을 설정할 때 모두 잘 처리 할 수 ​​있습니다 . Javascript의 Line endings 라는 세부 정보가 포함 된 SitePoint 기사가 있습니다 .

이것은 HTML 파일 자체의 실제 행 끝의 독립적 인 것이 있습니다 (모두 \n\r\n동일한 결과를 제공).

양식을 제출할 때 모든 브라우저 %0D%0A는 URL 인코딩에서 줄 바꿈을 정규화 할 수 있습니다. 이를 확인하려면 예를 들어 data:text/html,<form><textarea name="foo">foo%0abar</textarea><input type="submit"></form>제출 버튼을 누르십시오. (일부 브라우저는 제출 된 페이지의로드를 차단하지만 콘솔에서 URL 인코딩 된 양식 값을 볼 수 있습니다.)

그래도 당신이 결정을 많이 할 필요는 없다고 생각합니다. 줄 바꿈으로 텍스트를 나누려면 다음과 같이 할 수 있습니다.

lines = foo.value.split(/\r\n|\r|\n/g);


답변

예, 보편적입니다.

'\n'범용 개행 문자 이지만 입력에 따라 개행 문자 앞에 캐리지 리턴 문자 ( '\r') 가있을 수 있음을 명심해야합니다 .


답변

“\ n”을 사용하지 마십시오. 이것을 시도하십시오 :

var string = "this\
is a multi\
line\
string";

백 슬래시를 입력하고 계속 트럭을 타십시오! 매력처럼 작동합니다.


답변

대소 문자를 확인한 다음 적용하는 대신 개행 문자의 모든 경우를 처리하는 것이 가장 쉬울 수 있습니다. 예를 들어, 개행을 교체해야하는 경우 다음을 수행하십시오.

htmlstring = stringContainingNewLines.replace(/(\r\n|\n|\r)/gm, "<br>");


답변

사용하려는 html 코드를 생성하지 않는 한 \ n을 사용하십시오. <br />


답변

이메일 링크 기능 “% 0D % 0A”사용

function sendMail() {
var bodydata="Before "+ "%0D%0A";
    bodydata+="After"

var MailMSG = "mailto:aaa@sss.com"
         + "?cc=07@sss.com"
         + "&subject=subject"
         + "&body=" + bodydata;
window.location.href = MailMSG;
} 

[HTML]

<a href="#" onClick="sendMail()">Contact Us</a>


답변

현재 브라우저의 줄 구분 기호를 가져옵니다.

function getLineSeparator() {
  var textarea = document.createElement("textarea");
  textarea.value = "\n";
  return textarea.value;
}