Thực sự, khá nhiều những gì tiêu đề nói.Giới hạn thời gian mà .split() tách ra, thay vì cắt ngắn mảng kết quả
Giả sử bạn có chuỗi này:
var theString = "a=b=c=d";
Bây giờ, khi bạn chạy theString.split("=")
kết quả là ["a", "b", "c", "d"]
như mong đợi. Và, tất nhiên, khi bạn chạy theString.split("=", 2)
bạn nhận được ["a", "b"]
, sau khi đọc the MDN page for String#split()
có ý nghĩa với tôi.
Tuy nhiên, hành vi của tôi đang tìm là giống như Java String#split()
: Thay vì xây dựng mảng bình thường, sau đó trả lại n yếu tố đầu tiên, nó được xây dựng một loạt các là người đầu tiên n-1 trận đấu, sau đó thêm tất cả các ký tự còn lại làm phần tử cuối cùng của mảng. Xem the relevant docs để có mô tả tốt hơn.
Làm cách nào để có hiệu ứng này trong Javascript?
Tôi đang tìm câu trả lời có hiệu suất tốt nhất hoạt động như triển khai Java, mặc dù cách thực tế hoạt động có thể khác.
Tôi đã đăng nỗ lực của mình, nhưng tôi không biết cách viết về điều này.
Bạn có thể thêm giải thích nhanh về cách hoạt động của tính năng này không? –
@QPaysTaxes Tôi lặp lại "giới hạn" số lần và mỗi lần lặp lại, tôi sử dụng regex trạng thái để tìm lần xuất hiện tiếp theo của ký tự tách. Các regex nhớ nơi trận đấu cuối cùng của nó là, và một khi nó thực hiện tôi biết nơi trận đấu tiếp theo là. Tôi thêm lát cắt giữa hai vị trí đó trên mỗi lần lặp. Bên ngoài vòng lặp, tôi thêm lát chuỗi giữa kết hợp regex cuối cùng và kết thúc chuỗi. –
Và kể từ khi OP hỏi về hiệu suất - việc triển khai này nhanh gấp đôi (trong Chrome) như hai phương pháp khác. Làm tôi ngạc nhiên! –