JavaScript에서 두 줄 이상의 코드에서 문자열을 나누려면 어떻게해야합니까?


198

줄 바꿈에도 불구하고 연속적으로 읽을 수 있도록 코드 줄을 세분화하는 문자가 JavaScript에 있습니까?

뭔가 ....

1. 경고 ( "파일을 선택하십시오   
2. 삭제하려면 ");

답변:


272

예제에서 문자열을 두 부분으로 나눌 수 있습니다.

alert ( "Please Select file"
 + " to delete");

또는 문자열 인 경우 @Gumbo가 제안한대로 백 슬래시 를 사용할 수 있습니다 .

alert ( "Please Select file\
 to delete");

이 백 슬래시 접근 방식이 반드시 선호 되는 것은 아니며 보편적으로 지원되지 않을 수도 있습니다 (하드 디스크 데이터를 찾는 데 어려움이 있음). 그것은 것입니다 하지ECMA 5.1 사양 .

따옴표가 아닌 다른 코드로 작업 할 때는 줄 바꿈이 무시되고 완벽하게 허용됩니다. 예를 들면 다음과 같습니다.

if(SuperLongConditionWhyIsThisSoLong
  && SuperLongConditionOnAnotherLine
  && SuperLongConditionOnThirdLineSheesh)
{
    // launch_missiles();
}

if 문을 분리 할 수 ​​있습니까?
TTT

17
그러나 자동 세미콜론 삽입 메커니즘에주의하십시오. 함수 끝에서 한 행에 리턴하고 다음 행에 "문자열"을 시도하면 결과적으로 정의되지 않습니다.

이 표준을 준수합니까? 모든 호환 브라우저가이를 지원합니까? 마 오래된 브라우저는 오늘을 지원합니까? 이 중요한 질문들 중 어느 것도 다루지 않았다 -1.
ulidtko

3
글쎄 ... 아직 묻지 않은 새로운 질문을 많이한다면, 우리에게 그 질문에 대답 할 기회를 주어야합니다. 나는 만족스럽지 않은 추측으로 대답을 업데이트했다.
Michael Haren

2
백 슬래시를 조심하십시오. 블랭크를 찾을 때까지 모든 블랑크를 먹습니다. 예를 들어 "경고": 삭제하려면 파일을 선택하십시오. 파일과받는 사람 사이에 공백이 필요하면 백 슬래시 앞에 넣어야합니다.
jgomo3

41

줄 끝에 백 슬래시를 넣으십시오.

alert("Please Select file\
 to delete");

편집     나는이 것을 참고로이 하지 의 일부 ECMAScript를 문자열라인 종료 문자가 전혀 허용되지 않습니다

' LineTerminator '문자는 앞에 백 슬래시가 있어도 문자열 리터럴에 나타날 수 없습니다 \. 줄 종결 문자 캐릭터 문자의 문자열 값의 일부가 원인 올바른 방법 등의 제어 시퀀스를 사용하는 것 \n또는 \u000A.

따라서 문자열 연결을 사용하는 것이 좋습니다.


업데이트 2015-01-05     ECMAScript5의 문자열 리터럴 은 언급 된 구문을 허용합니다.

줄 종결 자 문자는 빈 문자 시퀀스를 생성하기 위해 LineContinuation의 일부를 제외하고 문자열 리터럴에 나타날 수 없습니다 . 줄 끝 문자가 문자열 리터럴의 문자열 값의 일부 원인이 될 수있는 올바른 방법과 같은 이스케이프 시퀀스를 사용하는 것입니다 \n\u000A.


1
ECMAScript5 는 다음과 같이 허용합니다. " 빈 문자 시퀀스를 생성하기 위해 LineContinuation의 일부를 제외하고는 줄 종결 자 문자를 문자열 리터럴로 표시 할 수 없습니다 . 줄 종결 자 문자를 문자열 리터럴의 문자열 값의 일부로 만드는 올바른 방법은 다음과 같습니다. \n또는\u000A
Oriol

1
@Oriol 메모 주셔서 감사합니다, 그에 따라 답변을 업데이트!
Gumbo

1
파일이 Windows에서 작성된 경우 문제가됩니다. 다시 말해 줄 \r\n대신 \n?로 끝나는 줄 입니다 .
Adam Plocher

31

ECMAScript 6에는 템플릿 문자열이 도입되었습니다 .

템플릿 문자열은 포함 된 표현식을 허용하는 문자열 리터럴입니다. 여러 줄 문자열과 문자열 보간 기능을 함께 사용할 수 있습니다.

예를 들어

alert(`Please Select file   
to delete`);

경고합니다

Please Select file   
to delete

1
대단해. 키보드에서이``를 얻으려면 SHIFT + '를 두 번 누르십시오. 독일어 키보드에서이 키는 백 스페이스 키 근처에 있습니다.
Nadu

@Nadu 키보드에 따라 다릅니다. 광산에는 `열쇠가 있습니다. 수정 자이므로 직접 작성되지 않습니다. 그렇기 때문에 두 번 눌러야한다고 생각하는 이유가 있지만 두 가지를 쓰게됩니다. 스페이스 바를 눌러 하나만 쓰십시오.
Oriol

멋진 해킹없이 여러 줄 문자열을 허용하는 데 너무 오래 걸렸다는 것이 믿기지 않습니다 ... 질문 : 줄 구분 기호로 사용되는 것은 무엇입니까-문서의 하드 코드 된 문자 또는 줄 바꿈 문자입니까?
StanE

1
* .js 파일의 확대를 원할 경우``에 문제가 있습니다.
Raskolnikov



4

흥미 롭습니다. 시도 :

alert("Some \
    string \
    wrapped \
    across \
    mutliples lines.")

그리고 이것은 효과가있었습니다. 그러나 실수로 최종 백 슬래시 다음에 공백 문자가있었습니다 (다른 모든 백 슬래시는 줄의 끝에있었습니다). 그리고 이것은 자바 스크립트에서 오류를 일으켰습니다! 이 공간을 제거하면 오류가 해결되었습니다.

이것은 Cordova를 사용하는 Android 용 ADT에 있습니다.


1
하루 종일이 문제와 싸우면서 보냈고 슬래시 후의 공백 문자로 인해 이온 앱이 컴파일되지 않는 것으로 나타났습니다. 감사합니다!
rekordboy

1
아무도 코드에 들여 쓰기가 문자열의 일부로 포함되어 있다고 설명 할 수는 없습니다. 예Some\n<4 spaces>string\n<4 spaces>wrapped\n<4 spaces>across\n<4 spaces>multiple lines.
JHH


0

긴 문자열 상수를 논리적 청크로 나누고 배열에 할당 할 수 있습니다. 그런 다음 join빈 문자열을 구분 기호로 사용하십시오.

var stringArray = [
  '1. This is first part....',
  '2. This is second part.....',
  '3. Finishing here.'
];

var bigLongString = stringArray.join('');
console.log(bigLongString);

출력은 다음과 같습니다.

  1. 이것은 첫 번째 부분입니다 .... 2. 이것은 두 번째 부분입니다 ..... 3. 여기서 마무리합니다.

이 방법으로 약간의 성능 저하가 있지만 코드 가독성과 유지 관리 성이 향상됩니다.


0

문자열을 여러 줄로 나누면 문제가 발생하는 경우 VSCode 사용자에게 좋은 솔루션입니다 (긴 JWT 토큰을 테스트해야 할 때이 문제에 직면했으며 템플릿 리터럴을 사용하여 트릭을 수행하지 못했습니다).


-3

위의 제안을 많이 시도했지만 Chrome 코드 관리자에서 불법 문자 경고를 받았습니다. 다음은 나를 위해 일했습니다 (Chrome에서만 테스트되었습니다!)

alert('stuff on line 1\\nstuff on line 2);

마치 ...

stuff on line 1
stuff on line 2

이중 백 슬래시를 참고하십시오! ... 이것은 중요한 것 같습니다!


-5

코드를 수동으로 중단 할 필요가 없습니다. 중단하려는 곳에 \ n을 추가하십시오.

alert ("Please Select file \n to delete");

이것은 다음과 같은 경고를 표시합니다

Please select file 
to delete.

다운 유권자, u 투표 이유를 알려주세요. 이 솔루션은 항상 저에게 효과적입니다.
Narendra

27
누가 아래로 투표했는지 또는 이유를 모르겠습니다. 그러나 추측으로는 op가 출력에 줄 바꿈을 삽입하는 대신 여러 줄의 코드에 텍스트 리터럴을 확장하는 방법을 알고 싶었습니다.
Zarepheth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.