10/10/2018, 10:38

Khắc phục lỗi substring 1 str lớn trong javascript

Chào các bạn mình có 1 string cực lớn, lên tới gần 1 tỷ byte
mình sử dụng substring để cắt lấy khoảng mình cần nhưng không được
str="string....."
mình muốn lấy 70 nghìn ký tự alert(str.substring(648215751,648285751))

Vậy có bạn nào biết cách khắc phục lỗi trên không chỉ mình với
thuyduongcd viết 12:49 ngày 10/10/2018
Thứ nhất, bạn kiếm đâu ra 1 string có 1tỷ byte như vậy? 1tỷ byte ~ 1GB. Để tải 1GB bạn nghĩ client phải mất bao nhiêu thời gian? Browser sẽ báo timeout khi chưa tải hết chuỗi. Chưa kể bộ nhớ server và client có đủ để xử lý chuỗi này hay không?
Thứ hai, theo tôi biết, mỗi trình duyệt có hạn chế về độ dài của chuỗi.
IE: 2^20 ~ 1MB
FF: 2^16 ~ 65.536
Opera: 2^12 ~ 8192
Theo đó, những chuỗi dài hơn giá trị đó sẽ bị cắt bỏ. Do đó không có chuyện tồn tại 1 chuỗi 1 tỷ byte.
mailsaveword viết 12:46 ngày 10/10/2018
string mình get từ 1 file .dat
filename = vt.dat
filesize= 1048576000
textfile="........."
Mình sử dụng Firefox 3.6.8 get String được là 134.217.728 (~134 triệu byte)
Như vậy mình chỉ có thể substring trong khoảng < = 134217728
Vậy có cách nào để mình get String của file đó trên 134217728 không vậy?
thuyduongcd viết 12:43 ngày 10/10/2018
Dùng ngôn ngữ server (php hoặc asp.net) đọc file đó và chỉ đọc đủ 70 nghìn ký tự như mong muốn rồi trả về client. Hoặc chia thành từng phần mà xử lý.
mailsaveword viết 12:42 ngày 10/10/2018
thuyduongcd hay nói đùa thật
dùng javascript để đọc Binary của file chỉ mất tầm 30s - > 2p là cùng
còn nếu sử lý phía server chắc mất cả giờ
thuyduongcd viết 12:46 ngày 10/10/2018
Không phải đùa. Chẳng qua bạn không nói rõ file nằm trên server hay trên client thôi.
Nếu dùng js đọc file ở client thì có nhiều cách. Nếu bạn dùng FileSystemObject thì có thể kết hợp giữa method read() và skip() để lấy một số ký tự ở vị trí cần thiết. Như vậy thay vì lấy 1 lần, hãy chia ra làm nhiều lần với độ dài vừa phải. Xử lý xong rồi lấy tiếp.
Ví dụ đầu tiên đọc 1000byte, xử lý xong đọc 1000 byte tiếp theo cho đến hết
Bài liên quan
0