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
다시 내부적 으로 다시 변환하지만 값을 설정할 때 모두 잘 처리 할 수 있습니다 . 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;
}
참고-ExtendScript JavaScript (Photoshop CS3 +와 같은 응용 프로그램에서 사용되는 Adobe Scripting Language)를 사용할 때 사용할 문자는 "\ r"입니다. "\ n"은 글꼴 문자로 해석되므로 많은 글꼴에 대신 블록 문자가 있습니다.
예를 들어 ( 'Note'라는 레이어를 선택하고 모든 기간 후에 줄 바꿈을 추가하려면) :
var layerText = app.activeDocument.artLayers.getByName('Note').textItem.contents;
layerText = layerText.replace(/\. /g,".\r");
\ n 또는 \ r \ n으로 줄 바꿈을 표현하는 데 문제가있었습니다 . 마차처럼 캐리지 리턴에 사용되는
문자 \ r 이 줄 바꿈처럼 작동했습니다.
따라서 어떤 경우에는 \ r도 고려하는 것이 좋습니다.
ES6에서``따옴표 (Esc 버튼 아래에 있음)를 사용할 수 있습니다. 따라서 다음과 같이 작성할 수 있습니다.
var text = `fjskdfjslfjsl
skfjslfkjsldfjslfjs
jfsfkjslfsljs`;
JS 문자열로 작업 할 때 그렇습니다.
HTML을 생성하는 경우 <br />
태그 를 사용해야 합니다 ( \n
더 이상 JS를 다루지 않기 때문에)
printAccountSummary: function()
{return "Welcome!" + "\n" + "Your balance is currently $1000 and your interest rate is 1%."}
};
console.log(savingsAccount.printAccountSummary()); // method
인쇄물:
Welcome!
Your balance is currently $1000 and your interest rate is 1%.
실용적인 관찰 ... 내 NodeJS 스크립트에는 다음 기능이 있습니다.
function writeToLogFile (message) {
fs.appendFile('myserverlog.txt', Date() + " " + message + "\r\n", function (err) {
if (err) throw err;
});
}
먼저 "\ n"만 가지고 있었지만 메모장에서 로그 파일을 열면 모든 항목이 같은 줄에 표시됩니다. 반면 메모장 ++는 각 항목을 개별 줄에 표시합니다. 코드를 "\ r \ n"으로 변경하면 메모장조차도 모든 항목을 자체 줄에 표시합니다.
은 \n
내가 만난 모든 경우에 잘입니다. 나는 당신이 웹을 사용 \n
하고 , 사용 하고 걱정하지 않습니다 (줄 바꿈 관련 문제가 없다면).
당신이 사용할 수 <br/>
하고 document.write/
, document.writeln
한.
참고 URL : https://stackoverflow.com/questions/1155678/javascript-string-newline-character
'Programming' 카테고리의 다른 글
jQuery를 사용하여 배열에서 특정 값을 제거하는 방법 (0) | 2020.02.22 |
---|---|
더 큰 div 안에 이미지 센터를 (세로 및 가로로) 만드는 방법 (0) | 2020.02.22 |
github의 기존 이슈에 새로운 풀 요청을 어떻게 첨부합니까? (0) | 2020.02.21 |
Java에서 배열을 초기화하는 방법은 무엇입니까? (0) | 2020.02.21 |
git을 사용하여 특정 파일의 변경 사항을 확인하십시오 (0) | 2020.02.21 |