Tiếng Việt

Văn bản & công cụ hàng ngày · Bộ công cụ văn bản

Tại sao danh sách được sắp xếp lại khác nhau giữa các máy tính: giải thích về cách sắp xếp theo miền địa phương

· Tại sao nó quan trọng

text-tools sắp xếp địa phương

Danh sách đa ngôn ngữ giống nhau được sắp xếp theo hai thứ tự bảng chữ cái khác nhau
Hình minh họa vector ToolAcre gốc

Giải thích sự khác biệt giữa thứ tự điểm mã và đối chiếu ngôn ngữ, lý do tại sao các chữ cái ä, é và chữ in hoa nằm ở các vị trí khác nhau trên các máy khác nhau và cách chia sẻ danh sách đã sắp xếp mà không gặp bất ngờ.

Cùng một danh sách, hai đơn hàng - kiểu của một đồng nghiệp đặt Ångström ở một nơi khác và cả hai bạn đều không sai

Trưởng nhóm có thể gửi cùng một danh sách tên người tham dự cho đồng nghiệp ở hai quốc gia và nhận hai thứ tự bảng chữ cái hợp lý. Những cái tên chứa các chữ cái có dấu là điểm thường gây bất đồng vì vị trí trong bảng chữ cái không được xác định chỉ bằng chữ cái cơ bản nhìn thấy được. Môi trường trình duyệt tham gia so sánh.

Không đồng nghiệp nào cần phải mắc lỗi thủ công. Vấn đề thực tế là việc “sắp xếp theo thứ tự bảng chữ cái” không xác định được một chuỗi chung cho văn bản đa ngôn ngữ. Trước khi xem xét các nội dung bổ sung hoặc xóa bỏ, hãy thống nhất xem lệnh nào đã hoàn thành là có thẩm quyền; nếu không, so sánh từng dòng sẽ hiển thị chuyển động chỉ do các quyết định sắp xếp riêng biệt gây ra.

Thứ tự điểm mã - tại sao một kiểu sắp xếp đơn giản lại đặt mọi chữ in hoa trước mỗi chữ cái viết thường và đẩy các chữ cái có dấu xuống cuối

Phần phác thảo mô tả cách sắp xếp điểm mã đơn giản đặt chữ hoa trước chữ cái viết thường và chữ cái có dấu ở cuối, nhưng đó không phải là những gì Bộ công cụ văn bản triển khai. Hàm `sortLines` của nó sao chép các dòng và so sánh từng cặp với `localeCompare`, do đó, các quy tắc đối chiếu trình duyệt được tham khảo thay vì số ký tự thô.

Xử lý trường hợp cũng rõ ràng trong các tùy chọn chức năng. Yêu cầu sắp xếp phân biệt chữ hoa chữ thường `variant` độ nhạy, trong khi chế độ không phân biệt chữ hoa chữ thường mặc định yêu cầu độ nhạy `base`. Điều đó có thể làm cho các dạng có cách viết hoa hoặc dấu trọng âm khác nhau được so sánh tương đương nhau, khiến vị trí tương đối của chúng phụ thuộc vào thứ tự ổn định được cung cấp cho bộ sắp xếp thay vì buộc các chữ hoa vào một khối riêng biệt.

ToolAcre không sử dụng thứ tự điểm mã đơn giản: nó gọi localeCompare cho mỗi dòng

Sự so sánh chuyển `undefined` làm ngôn ngữ, yêu cầu bộ thực thi sử dụng hành vi ngôn ngữ mặc định của nó. Nguồn không hứa hẹn đối chiếu tiếng Thụy Điển, tiếng Đức, tiếng Anh hoặc bất kỳ đối chiếu có tên nào khác và giao diện được đại diện bởi hàm này không có đối số ngôn ngữ. Do đó, việc xuất bản các mệnh lệnh quốc gia chính xác ở đây sẽ vượt xa các bằng chứng thực hiện.

Ranh giới này giải thích tại sao các kết quả có thể khác nhau mà không chứng minh chính xác cài đặt nào đã gây ra sự khác biệt cụ thể. Ghi lại trình duyệt và môi trường khi khả năng tái tạo là quan trọng nhưng không suy ra ngôn ngữ từ vị trí của một tên có dấu. Thực tế đáng tin cậy là bộ công cụ ủy quyền đặt hàng tới `localeCompare` với mặc định thời gian chạy thay vì ghim ngôn ngữ dùng chung.

Trình duyệt cung cấp ngôn ngữ mặc định, nhưng bộ công cụ không cung cấp bộ chọn ngôn ngữ

Chạy chữ số cũng nhận được sự đối xử đặc biệt. Hàm mặc định `numeric` là true và chuyển tiếp tùy chọn đó tới `localeCompare`. Do đó, danh sách chứa `item2` và `item10` nhằm đặt số nhỏ hơn chạy trước theo thứ tự tăng dần thay vì so sánh ký tự `1` trong mười với ký tự `2` trong hai.

Đệm 0 vẫn hữu ích khi dữ liệu phải đi qua một bộ sắp xếp khác có hành vi không xác định, nhưng không bắt buộc phải có thứ tự nhận biết số ở đây. Thay vào đó, nếu muốn có thứ tự từ vựng chính xác, hàm cơ bản sẽ hỗ trợ tắt tính năng so sánh số. Bài học quan trọng là ghi lại tùy chọn đã chọn thay vì cho rằng mọi lệnh theo thứ tự bảng chữ cái đều xử lý các chữ số được nhúng như nhau.

Chữ số chạy sắp xếp số theo mặc định, vì vậy item2 xuất hiện trước item10

Để có ví dụ có thể xem lại, hãy đặt `Ångström`, `Ana`, `Émile`, `item2` và `item10` trên các dòng riêng biệt, sau đó sắp xếp một lần trong trình duyệt do nhóm chọn. Lưu đầu ra đó làm tài liệu tham khảo. Bài viết này cố tình không xuất bản thứ tự tên có dấu dự kiến ​​của trình duyệt thứ hai vì kho lưu trữ không chứa bản cố định ngôn ngữ được ghim thiết lập nó.

Nếu đồng nghiệp có thứ tự khác, hãy so sánh hai văn bản đã hoàn thành với sự khác biệt dựa trên dòng. Việc triển khai khác biệt căn chỉnh chính xác các dòng bằng nhau thông qua bảng dãy con chung dài nhất và gắn nhãn các hàng không khớp là được thêm hoặc xóa. Nó báo cáo sự dịch chuyển cấu trúc một cách trung thực, nhưng nó không giải thích so sánh miền địa phương nào đã đặt tên ở một trong hai vị trí.

Ví dụ hoạt động: so sánh một đơn hàng do trình duyệt tạo ra thay vì phát minh ra hai kết quả miền địa phương

Quy tắc cộng tác đơn giản nhất là sắp xếp một lần và chia sẻ các dòng kết quả, không chỉ là dữ liệu đầu vào chưa được sắp xếp cộng với hướng dẫn nhấn Sắp xếp. Kết quả dạng văn bản thuần túy giữ nguyên quyết định đã được xem xét thực sự. Người nhận có thể tìm kiếm, chú thích hoặc phân biệt thành phần đó mà không cần yêu cầu trình duyệt của riêng họ tạo lại thứ tự phụ thuộc vào môi trường.

Giữ lại danh sách gốc khi xuất xứ có vấn đề. Bản sao đã được sắp xếp là bản trình bày để xem xét, trong khi bản gốc có thể mang thứ tự nguồn đến hoặc nguồn có ý nghĩa. Việc đặt tên cho tệp tham chiếu và ghi lại xem việc sắp xếp có tăng dần, phân biệt chữ hoa chữ thường và số hay không sẽ biến một thao tác theo thứ tự bảng chữ cái mơ hồ thành một thao tác nhóm có thể lặp lại.

Điều này không bao gồm những gì - tùy chọn sắp xếp số, thứ tự đảo ngược và sắp xếp theo một cột cụ thể

Bản phác thảo ban đầu cho biết các tùy chọn sắp xếp số và thứ tự đảo ngược không được đề cập, nhưng nguồn mâu thuẫn với giới hạn đó. `sortLines` chấp nhận tùy chọn số và hướng tăng dần hoặc giảm dần, trong khi `reverseLines` có thể đảo ngược trình tự dòng hiện tại. Những khả năng đó không nên được mô tả là không có trong logic văn bản của bộ công cụ.

Sắp xếp theo một cột cụ thể thực sự nằm ngoài chức năng này. Mỗi dòng hoàn chỉnh là giá trị so sánh, do đó, một hàng chẳng hạn như `Paris, Ana` được sắp xếp từ đầu thay vì theo tên sau dấu phẩy. Phân tích các hàng có cấu trúc bằng công cụ dữ liệu phù hợp khi các trường quan trọng; sắp xếp dòng không nên giả vờ hiểu các cột.

Bộ công cụ này bao gồm việc sắp xếp số và thứ tự đảo ngược, nhưng không sắp xếp theo cột

Việc sắp xếp nhận biết ngôn ngữ rất hữu ích vì bảng chữ cái của con người không thể được rút gọn một cách an toàn thành một quy tắc số ký tự thô. Điều đó cũng có nghĩa là ngôn ngữ mặc định được bỏ ghim không phải là hợp đồng có khả năng tái tạo trên nhiều máy. Bộ công cụ văn bản sử dụng đối chiếu trình duyệt, mặc định là so sánh không phân biệt chữ hoa chữ thường và nhận biết số, đồng thời có thể đảo ngược hướng được yêu cầu.

Đối với môi trường mở rộng nhóm, hãy tạo hợp đồng đầu ra: chọn một phiên trình duyệt, đặt các tùy chọn dự định, sắp xếp và phân phối văn bản chính xác đó. Khi một thứ tự khác xuất hiện, hãy so sánh các hiện vật trước khi tranh luận xem bảng chữ cái nào đúng. Nguồn hỗ trợ giải thích cơ chế, trong khi kết quả đã lưu cung cấp trình tự ổn định mà bản thân việc triển khai không đảm bảo trên toàn cầu.