Lỗi ký tự xuống dòng

tuhocvba

Administrator
Thành viên BQT
Giả định tôi có một đoạn văn bản dài cả ngàn dòng.
Để xử lý cái đoạn văn bản này chúng ta sẽ tách văn bản thành từng khúc và nạp vào mảng để xử lý.
Ví dụ mỗi dòng là một phần tử của mảng.

Bạn cần đăng nhập để thấy đính kèm


s là nội dung toàn văn bản.
Mã:
arr = Split(s,chr(10))
Như vậy ở trên ta lấy điều kiện tách chuỗi ký tự thành mảng, mỗi dòng là một phần tử của mảng.
Tuy nhiên nếu coi ký tự xuống dòng chỉ có chr(10) thì code của chúng ta sẽ gặp vấn đề lớn.

Bởi cách nhập ký tự thì mỗi người một kiểu, không ai giống ai. Ngay cả khi tham khảo các bài viết của Nhật, tôi cũng cảm thấy rất khó dịch và thực ra là cũng chưa phân biệt được rõ ràng giữa chr(10) và chr(13).
Cả hai ký tự này đều có nghĩa là xuống dòng. Nhưng nó có giá trị không giống nhau.
Vì vậy, khi tác chuỗi ký tự ra mảng, chúng ta phải lưu tâm tới vấn đề này. Rõ ràng lệnh Split ở ví dụ trên là chưa đủ.

Thông thường ta sẽ tách thử trước với chr(10) như ở trên, và sau đó kiểm tra kích thước mảng. Nếu kích thước mảng quá nhỏ thì chúng ta sẽ thực hiện tiếp:
Mã:
arr = Split(s,chr(13))
Chr(10) -Tên viết tắt là LF : Line Feed, đây là một ký tự không được hiển thị rõ ràng như các ký tự khác. Nó có ý nghĩa như là một mệnh lệnh, hãy di chuyển con trỏ tới dòng tiếp theo.
Bạn cần đăng nhập để thấy đính kèm

Chr(13) -Tên viết tắt là CR : carriage return, đưa con trỏ về đầu dòng. Nếu như có một mệnh lệnh là hãy xuống dòng đi, thì mã ký tự này không phải là làm việc như vậy. Ý nghĩa của mã ký tự này là: Hãy đưa con trỏ về đầu dòng.
Bạn cần đăng nhập để thấy đính kèm

Nói thì nói như vậy, nhưng việc trở về đầu dòng như thế này cũng chả khác gì là xuống dòng!

Mac dùng CR.
Win thì dùng cả LF, CR.
Linux thì dùng LF.
Nguồn tham khảo:
 
Top