Hướng dẫn javascript split newline - javascript chia dòng mới

Chia một chuỗi theo dòng mới trong javascript #

Để phân chia một chuỗi theo Newline, hãy gọi phương thức split() chuyển nó theo biểu thức chính quy sau là tham số - /\r?\n/. Phương thức split sẽ phân chia chuỗi trên mỗi lần xuất hiện của một ký tự mới và trả về một mảng chứa các chuỗi con.

Copied!

const str = 'first\nsecond\r\nthird'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third'] console.log(result);

Chúng tôi đã chuyển một biểu thức chính quy cho phương thức chuỗi.Split.

Tiền đạo chém / / đánh dấu sự khởi đầu và kết thúc của biểu thức chính quy.

Chúng tôi muốn thay thế cả hai ký tự \r

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
0 vì dòng phá vỡ khác nhau tùy thuộc vào hệ điều hành.

Ví dụ: Windows sử dụng

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
1 làm kết thúc ký tự dòng, trong khi

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
0 là mặc định trong Unix.

Dấu câu hỏi

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
3 khớp với mục trước (\ r) 0 hoặc 1 lần. Nói cách khác, \r có thể ở đó, hoặc nó có thể không ở đó.

Nếu bạn cần trợ giúp đọc một biểu thức thông thường, hãy đánh dấu trang gian lận Regex này từ MDN.

Có thể có một trường hợp cạnh bạn cần xử lý - điều gì sẽ xảy ra nếu chuỗi kết thúc bằng một ký tự mới. Trong trường hợp này, phần tử mảng cuối cùng sẽ là một chuỗi trống.

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);

Chúng tôi chia chuỗi trên các ký tự mới, tuy nhiên không có gì sau dòng mới cuối cùng, vì vậy chúng tôi nhận được một chuỗi trống làm phần tử mảng cuối cùng.

Chúng ta có thể xử lý việc này bằng cách sử dụng phương thức mảng.filter.

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/).filter(element => element); // 👇️ ['first', 'second', 'third'] console.log(result);

Hàm chúng tôi đã chuyển sang phương thức

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
5 được gọi với mỗi phần tử trong mảng.

Trên mỗi lần lặp, chúng tôi trả lại phần tử như là.

Phương thức

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
5 trả về một mảng mới chỉ chứa các giá trị sự thật mà hàm gọi lại được trả về.

Sự thật là tất cả các giá trị không giả.

Các giá trị giả trong JavaScript là:

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
7,

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
8,

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
9,

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/).filter(element => element); // 👇️ ['first', 'second', 'third'] console.log(result);
0,

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/).filter(element => element); // 👇️ ['first', 'second', 'third'] console.log(result);
1 (chuỗi trống),

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/).filter(element => element); // 👇️ ['first', 'second', 'third'] console.log(result);
2 (không phải là số).

Chuỗi trống là một giá trị giả, vì vậy nó không được thêm vào mảng mới.

Một cách tiếp cận thay thế và súc tích hơn sẽ là chuyển đối tượng

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/).filter(element => element); // 👇️ ['first', 'second', 'third'] console.log(result);
3 cho phương pháp

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
5.

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/).filter(element => element); // 👇️ ['first', 'second', 'third'] console.log(result);

Đối tượng

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/).filter(element => element); // 👇️ ['first', 'second', 'third'] console.log(result);
3 lấy mỗi phần tử từ mảng, chuyển đổi nó thành boolean và trả về kết quả.

Copied!

console.log(Boolean('test')); // 👉️ true console.log(Boolean('')); // 👉️ false

Các chuỗi trống là các giá trị giả và được chuyển đổi thành

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/); // 👇️ ['first', 'second', 'third', ''] console.log(result);
7, do đó chúng không được thêm vào mảng mới.

Cách tiếp cận mà bạn chọn là một vấn đề sở thích cá nhân. Tôi sẽ đi với việc trả lại rõ ràng phần tử mảng khi tôi tìm thấy cách tiếp cận

Copied!

const str = 'first\nsecond\r\nthird\n'; const result = str.split(/\r?\n/).filter(element => element); // 👇️ ['first', 'second', 'third'] console.log(result);
3 là quá ngầm và gián tiếp.