Làm cách nào để phá vỡ một chuỗi trên nhiều dòng mã trong JavaScript?


198

Có một ký tự trong JavaScript để phá vỡ một dòng mã để nó được đọc liên tục mặc dù đang ở trên một dòng mới?

Cái gì đó như....

1. cảnh báo ("Vui lòng chọn tệp   
2. \ để xóa ");

Câu trả lời:


272

Trong ví dụ của bạn, bạn có thể chia chuỗi thành hai phần:

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

Hoặc, khi đó là một chuỗi, như trong trường hợp của bạn, bạn có thể sử dụng dấu gạch chéo ngược như @Gumbo đề xuất:

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

Lưu ý rằng phương pháp dấu gạch chéo ngược này không nhất thiết được ưa thích và có thể không được hỗ trợ phổ biến (tôi gặp khó khăn khi tìm dữ liệu cứng về điều này). Nó không có trong thông số ECMA 5.1 .

Khi làm việc với mã khác (không nằm trong dấu ngoặc kép), ngắt dòng bị bỏ qua và hoàn toàn chấp nhận được. Ví dụ:

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

Bạn có thể chia tay một tuyên bố if?
TTT

17
Nhưng hãy cẩn thận với cơ chế chèn dấu chấm phẩy tự động: Cố gắng quay trở lại trên một hàng và một "chuỗi" trên hàng tiếp theo ở cuối hàm và kết quả là bạn sẽ không xác định được.
một số

Đây có phải là tiêu chuẩn phù hợp? Tất cả các trình duyệt tuân thủ sẽ hỗ trợ nó? Các trình duyệt cũ hơn có hỗ trợ nó ngày hôm nay không? Không có câu hỏi quan trọng nào được đề cập, -1.
ulidtko

3
Chà ... nếu bạn định hỏi một loạt câu hỏi mới chưa được hỏi, bạn phải cho chúng tôi cơ hội trả lời chúng. Tôi cập nhật câu trả lời của mình với một phỏng đoán không thỏa mãn.
Michael Haren

2
Coi chừng dấu gạch chéo ngược. Nó sẽ ăn tất cả các blancks cho đến khi nó tìm thấy một khoảng trống. Vì vậy, ví dụ sẽ "cảnh báo": Vui lòng chọn xóa fileto. Nếu bạn muốn khoảng trắng giữa tệp và đến, bạn nên đặt nó trước khi xóa dấu gạch chéo ngược.
jgomo3

41

Đặt dấu gạch chéo ngược ở cuối dòng:

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

Chỉnh sửa     Tôi phải lưu ý rằng đây không phải là một phần của chuỗi ECMAScript vì các ký tự kết thúc dòng không được phép ở tất cả:

A ' LineTerminator nhân vật' không thể xuất hiện trong một chữ chuỗi, thậm chí nếu trước bởi một dấu gạch chéo \. Cách chính xác để làm cho một ký tự kết thúc dòng là một phần của giá trị chuỗi của một chuỗi ký tự là sử dụng một chuỗi thoát như \nhoặc \u000A.

Vì vậy, sử dụng nối chuỗi là sự lựa chọn tốt hơn.


Cập nhật 2015-01-05     Chuỗi ký tự trong ECMAScript5 cho phép cú pháp được đề cập:

Một ký tự kết thúc dòng không thể xuất hiện trong một chuỗi ký tự, ngoại trừ một phần của LineContininating để tạo ra chuỗi ký tự trống. Cách chính xác để làm cho một ký tự kết thúc dòng là một phần của giá trị Chuỗi của một chuỗi ký tự là sử dụng một chuỗi thoát như \nhoặc \u000A.


1
ECMAScript5 cho phép nó: " Một ký tự kết thúc dòng không thể xuất hiện trong một chuỗi ký tự, ngoại trừ một phần của LineContininating để tạo ra chuỗi ký tự trống. Cách chính xác để làm cho một ký tự kết thúc dòng là một phần của giá trị Chuỗi của một chuỗi ký tự là để sử dụng một chuỗi thoát như \nhoặc \u000A. "
Oriol

1
@Oriol Cảm ơn bạn đã lưu ý, cập nhật câu trả lời cho phù hợp!
Gumbo

1
Đây có phải là vấn đề nếu tập tin được tạo trong Windows. Nói cách khác, dòng kết thúc bằng \r\nthay vì \n?
Adam Plocher

31

ECMAScript 6 giới thiệu các chuỗi mẫu :

Chuỗi mẫu là chuỗi ký tự cho phép các biểu thức nhúng. Bạn có thể sử dụng các chuỗi đa dòng và các tính năng nội suy chuỗi với chúng.

Ví dụ,

alert(`Please Select file   
to delete`);

sẽ cảnh báo

Please Select file   
to delete

1
Wow tuyệt vời. Để có được các `` này trên bàn phím, nhấn SHIFT + ạc hai lần. Trên bàn phím tiếng Đức, phím đó nằm gần phím backspace.
Nadu

@Nadu Điều đó phụ thuộc vào bàn phím. Của tôi có một `chìa khóa. Vì nó là một sửa đổi, nó không được viết trực tiếp. Đó có thể là lý do tại sao bạn nghĩ rằng bạn nên nhấn nó hai lần, nhưng điều đó sẽ viết hai trong số đó. Nhấn phím cách để chỉ viết một.
Oriol

Không thể tin được rằng phải mất quá nhiều thời gian để cho phép các chuỗi đa dòng mà không có các bản hack ưa thích ... Câu hỏi là: Cái gì sẽ được sử dụng làm dấu tách dòng - một char (mã hóa) cứng hoặc char phá vỡ dòng của tài liệu?
StanE

1
Có vấn đề với `` trong trường hợp khi bạn muốn phóng to tệp * .js.
Raskolnikov

1
Hãy xem xét, vẫn còn trong tháng 3 năm 2018, chỉ có 89% trình duyệt được sử dụng toàn cầu hỗ trợ các chuỗi mẫu theo caniuse.com caniuse.com/#feat=template-literals
FFirmenich

7

Chia chuỗi thành hai mảnh 

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

9
Nhưng đừng quên có một khoảng trống ở cuối phần đầu hoặc phần đầu của đoạn thứ hai;)
Majid fouadpour

4

Thú vị cần lưu ý. Đã thử:

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

Và điều này đã làm việc. Tuy nhiên, do tai nạn!, Có một nhân vật không gian theo dấu gạch chéo ngược cuối cùng (tất cả các dấu gạch chéo ngược khác nằm ở cuối dòng). Và điều này gây ra một lỗi trong javascript! Tuy nhiên, việc xóa không gian này đã sửa lỗi.

Đây là trong ADT cho Android bằng Cordova.


1
Dành phần lớn thời gian trong ngày của tôi để chống lại vấn đề này và tôi cũng phát hiện ra, nhờ có bạn, rằng một nhân vật không gian sau bất kỳ dấu gạch chéo nào đã khiến ứng dụng ion của tôi không được biên dịch. Cảm ơn bạn!
rekordboy

1
Không thể tin bất cứ ai nhận xét rằng điều này sẽ bao gồm bất kỳ sự thụt lề nào trong mã như là một phần của chuỗi, để ví dụ trở thànhSome\n<4 spaces>string\n<4 spaces>wrapped\n<4 spaces>across\n<4 spaces>multiple lines.
JHH

1

Bạn chỉ có thể sử dụng

1:  alert("Please select file" +
2:        " to delete");

Cần làm việc


0

Bạn có thể chia một chuỗi dài liên tục thành các khối logic và gán chúng thành một mảng. Sau đó làm một joinvới một chuỗi rỗng như là một dấu phân cách.

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

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

Đầu ra sẽ là:

  1. Đây là phần đầu tiên .... 2. Đây là phần thứ hai ..... 3. Kết thúc ở đây.

Có một hiệu suất nhỏ đạt được theo cách này nhưng bạn có được khả năng đọc và bảo trì mã.


0

Một giải pháp tốt ở đây cho người dùng VSCode , nếu một chuỗi bị phá vỡ thành nhiều dòng gây ra sự cố (tôi đã phải đối mặt với điều này khi tôi phải kiểm tra mã thông báo JWT dài và bằng cách nào đó sử dụng các mẫu chữ không thực hiện được.)


-3

Tôi đã thử một số đề xuất ở trên nhưng nhận được cảnh báo ký tự MINH HỌA trong trình kiểm tra mã Chrome. Cách sau đây hiệu quả với tôi (chỉ được thử nghiệm trong Chrome!)

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

đi ra như ...

stuff on line 1
stuff on line 2

LƯU Ý dấu gạch chéo kép !! ... điều này có vẻ quan trọng!


-5

Không cần bất kỳ sự phá vỡ thủ công trong mã. Chỉ cần thêm \ n nơi bạn muốn phá vỡ.

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

Điều này sẽ hiển thị cảnh báo như

Please select file 
to delete.

xuống cử tri, bạn có thể vui lòng cho biết lý do cho downvote. Giải pháp này hiệu quả với tôi luôn.
Narendra

27
Tôi không biết ai đã bỏ phiếu hoặc tại sao; nhưng chỉ là một phỏng đoán: op muốn biết làm thế nào để mở rộng một văn bản bằng chữ trên nhiều dòng mã, thay vì làm thế nào để chèn một ngắt dòng trong đầu ra.
Zarepheth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.