프로그래밍 언어/HTML,CSS,JS

JavaScript 문자열 개행 문자

Rateye 2021. 7. 27. 10:32
728x90
반응형

 

질문 : 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 사용합니다. \n 잘 처리 할 수 있지만 IE와 Opera는 내부적으로 다시 \r\n Line endings in Javascript 라는 세부 정보가 포함 된 SitePoint 기사가 있습니다.

또한 이것은 HTML 파일 자체의 실제 줄 끝과는 별개입니다 ( \n\r\n 모두 동일한 결과를 제공함).

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

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

lines = foo.value.split(/\r\n|\r|\n/g);
                        
출처 : https://stackoverflow.com/questions/1155678/javascript-string-newline-character
728x90
반응형