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ự Copied!\r
và
0 vì dòng phá vỡ khác nhau tùy thuộc vào hệ điều hành.const str = 'first\nsecond\r\nthird\n';
const result = str.split[/\r?\n/];
// 👇️ ['first', 'second', 'third', '']
console.log[result];
Ví dụ: Windows sử dụng
1 làm kết thúc ký tự dòng, trong khiCopied!
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.Copied!
const str = 'first\nsecond\r\nthird\n'; const result = str.split[/\r?\n/]; // 👇️ ['first', 'second', 'third', ''] console.log[result];
Dấu câu hỏi
3 khớp với mục trước [\ r] 0 hoặc 1 lần. Nói cách khác,Copied!
const str = 'first\nsecond\r\nthird\n'; const result = str.split[/\r?\n/]; // 👇️ ['first', 'second', 'third', ''] console.log[result];
\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
5 được gọi với mỗi phần tử trong mảng.Copied!
const str = 'first\nsecond\r\nthird\n'; const result = str.split[/\r?\n/]; // 👇️ ['first', 'second', 'third', ''] console.log[result];
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! Copied! Copied! Copied! Copied! Copied!
7, const str = 'first\nsecond\r\nthird\n';
const result = str.split[/\r?\n/];
// 👇️ ['first', 'second', 'third', '']
console.log[result];
8, const str = 'first\nsecond\r\nthird\n';
const result = str.split[/\r?\n/];
// 👇️ ['first', 'second', 'third', '']
console.log[result];
9, const str = 'first\nsecond\r\nthird\n';
const result = str.split[/\r?\n/];
// 👇️ ['first', 'second', 'third', '']
console.log[result];
0, 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], 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ố].const str = 'first\nsecond\r\nthird\n';
const result = str.split[/\r?\n/].filter[element => element];
// 👇️ ['first', 'second', 'third']
console.log[result];
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
3 cho phương phápCopied!
const str = 'first\nsecond\r\nthird\n'; const result = str.split[/\r?\n/].filter[element => element]; // 👇️ ['first', 'second', 'third'] console.log[result];
5.Copied!
const str = 'first\nsecond\r\nthird\n'; const result = str.split[/\r?\n/]; // 👇️ ['first', 'second', 'third', ''] console.log[result];
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
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!
const str = 'first\nsecond\r\nthird\n'; const result = str.split[/\r?\n/].filter[element => element]; // 👇️ ['first', 'second', 'third'] console.log[result];
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
7, do đó chúng không được thêm vào mảng mới.Copied!
const str = 'first\nsecond\r\nthird\n'; const result = str.split[/\r?\n/]; // 👇️ ['first', 'second', 'third', ''] console.log[result];
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
3 là quá ngầm và gián tiếp.Copied!
const str = 'first\nsecond\r\nthird\n'; const result = str.split[/\r?\n/].filter[element => element]; // 👇️ ['first', 'second', 'third'] console.log[result];