Bahasa Melayu

Teks & alat harian · Kit Alat Teks

Mengapa senarai diisih berbeza antara komputer: pengisihan sedar setempat dijelaskan

· Mengapa ia penting

alat teks menyusun setempat

Senarai berbilang bahasa yang sama disusun dalam dua susunan abjad yang berbeza
Ilustrasi vektor ToolAcre asal

Menjelaskan perbezaan antara susunan titik kod dan pengumpulan tempat, mengapa huruf ä, é dan huruf besar mendarat di tempat yang berbeza pada mesin yang berbeza dan cara berkongsi senarai yang diisih tanpa kejutan.

Senarai yang sama, dua pesanan — jenis rakan sekerja meletakkan Ångström di tempat lain, dan anda berdua tidak salah

Ketua pasukan boleh menghantar senarai nama peserta yang sama kepada rakan sekerja di dua negara dan menerima dua susunan abjad yang munasabah. Nama yang mengandungi huruf beraksen adalah titik perselisihan yang biasa, kerana penempatan abjad tidak ditentukan oleh huruf asas yang kelihatan sahaja. Persekitaran pelayar mengambil bahagian dalam perbandingan.

Rakan sekerja tidak perlu melakukan kesilapan manual. Masalah praktikal ialah "isih mengikut abjad" tidak mengenal pasti satu urutan universal untuk teks berbilang bahasa. Sebelum menyemak penambahan atau penyingkiran, bersetuju pesanan lengkap mana yang berwibawa; jika tidak perbandingan baris demi baris akan menunjukkan pergerakan yang disebabkan sahaja oleh keputusan pengisihan yang berasingan.

Susunan titik kod — mengapa jenis naif meletakkan setiap huruf besar sebelum setiap huruf kecil dan menolak huruf beraksen ke penghujung

Garis besar menerangkan jenis titik kod naif yang meletakkan huruf besar sebelum huruf kecil dan huruf beraksen pada penghujungnya, tetapi bukan itu yang dilaksanakan oleh Kit Alat Teks. Fungsi `sortLines`nya menyalin baris dan membandingkan setiap pasangan dengan `localeCompare`, jadi peraturan pengumpulan pelayar dirujuk berbanding nombor aksara mentah.

Pengendalian kes juga jelas dalam pilihan fungsi. Isih sensitif huruf besar meminta kepekaan `variant`, manakala mod lalai tidak sensitif huruf besar meminta kepekaan `base`. Itu boleh menjadikan bentuk huruf besar atau aksen berbeza dibandingkan sebagai setara, meninggalkan peletakan relatifnya bergantung pada susunan stabil yang dibekalkan kepada pengisih dan bukannya memaksa huruf besar ke dalam blok yang berasingan.

ToolAcre tidak menggunakan susunan titik kod naif: ia memanggil localeCompare untuk setiap baris

Perbandingan melepasi `undefined` sebagai tempattempat, yang meminta masa jalan untuk menggunakan tingkah laku tempat lalainya. Sumber itu tidak menjanjikan koleksi Sweden, Jerman, Inggeris atau mana-mana penyusun nama lain, dan antara muka yang diwakili oleh fungsi ini tidak mempunyai hujah setempat. Oleh itu, penerbitan perintah negara yang tepat di sini akan melangkaui bukti pelaksanaan.

Sempadan ini menerangkan sebab keputusan boleh berbeza tanpa membuktikan dengan tepat tetapan yang menyebabkan perbezaan tertentu. Rakam pelayar dan persekitaran apabila kebolehulangan penting, tetapi jangan membuat kesimpulan tempat daripada satu kedudukan nama beraksen. Fakta yang boleh dipercayai ialah kit alat mewakilkan pesanan kepada `localeCompare` dengan lalai masa jalan dan bukannya menyematkan bahasa kongsi.

Pelayar membekalkan tempat lalai, tetapi kit alat tidak menawarkan pemilih tempat

Larian digit juga menerima layanan istimewa. Fungsi lalai `numeric` kepada benar dan memajukan pilihan itu kepada `localeCompare`. Akibatnya, senarai yang mengandungi `item2` dan `item10` bertujuan untuk meletakkan larian angka yang lebih kecil dahulu dalam tertib menaik dan bukannya membandingkan aksara `1` dalam sepuluh terhadap aksara `2` dalam dua.

Pelapik sifar kekal berguna apabila data mesti melalui penyisih lain yang tingkah lakunya tidak diketahui, tetapi ia tidak diperlukan untuk mendapatkan pesanan sedar angka di sini. Jika susunan leksikal yang tepat dikehendaki sebaliknya, fungsi asas menyokong mematikan perbandingan berangka. Pelajaran penting ialah mendokumentasikan pilihan yang dipilih dan bukannya menganggap setiap perintah abjad memperlakukan digit terbenam sama.

Digit berjalan mengisih secara berangka secara lalai, jadi item2 datang sebelum item10

Untuk contoh yang boleh disemak, letakkan `Ångström`, `Ana`, `Émile`, `item2` dan `item10` pada baris berasingan, kemudian isi sekali dalam pelayar yang dipilih oleh pasukan. Simpan output itu sebagai rujukan. Artikel ini sengaja tidak menerbitkan susunan nama aksen pelayar kedua yang dijangka kerana repositori tidak mengandungi lekapan tempat disematkan yang mewujudkannya.

Jika rakan sekerja mempunyai pesanan lain, bandingkan kedua-dua teks yang lengkap dengan perbezaan berasaskan baris. Pelaksanaan diff menjajarkan baris yang sama tepat melalui jadual jujukan lazim terpanjang dan melabelkan baris yang tidak sepadan sebagai ditambah atau dialih keluar. Ia melaporkan pergerakan struktur dengan setia, tetapi ia tidak menjelaskan perbandingan tempat yang meletakkan nama pada mana-mana kedudukan.

Contoh yang berjaya: bandingkan satu pesanan yang dihasilkan oleh pelayar dan bukannya mencipta dua hasil tempatan

Peraturan kerjasama yang paling mudah ialah mengisih sekali dan berkongsi baris yang terhasil, bukan sekadar input yang tidak diisih serta arahan untuk menekan Isih. Keputusan teks biasa mengekalkan keputusan yang sebenarnya telah disemak. Penerima boleh mencari, menganotasi atau membezakan artifak itu tanpa meminta pelayar mereka sendiri untuk mencipta semula pesanan yang bergantung kepada persekitaran.

Simpan senarai asal juga apabila asalnya penting. Salinan yang diisih ialah pembentangan untuk semakan, manakala salinan asal mungkin membawa ketibaan bermakna atau pesanan sumber. Menamakan fail rujukan dan merekodkan sama ada pengisihan adalah menaik, sensitif huruf besar dan berangka menukar operasi abjad yang samar-samar menjadi penyerahan pasukan yang boleh diulang.

Perkara ini tidak meliputi — pilihan pengisihan berangka, susunan terbalik dan pengisihan mengikut lajur tertentu

Garis besar asal mengatakan pilihan pengisihan berangka dan susunan terbalik tidak dilindungi, tetapi sumbernya bercanggah dengan batasan itu. `sortLines` menerima pilihan berangka dan arah menaik atau menurun, manakala `reverseLines` boleh membalikkan jujukan baris semasa. Keupayaan tersebut tidak boleh digambarkan sebagai tiada dalam logik teks kit alat.

Isih mengikut lajur tertentu adalah benar-benar di luar fungsi ini. Setiap baris yang lengkap ialah nilai perbandingan, jadi baris seperti `Paris, Ana` diisih dari permulaannya dan bukannya dengan nama selepas koma. Menghuraikan baris berstruktur dengan alat data yang sesuai apabila medan penting; pengisihan baris tidak seharusnya berpura-pura memahami lajur.

Kit alat ini merangkumi pengisihan berangka dan susunan terbalik, tetapi tidak mengisih mengikut lajur

Pengisihan sedar setempat berguna kerana abjad manusia tidak boleh dikurangkan dengan selamat kepada satu peraturan nombor aksara mentah. Ini juga bermakna bahawa tempat lalai yang tidak disematkan bukanlah kontrak kebolehulangan merentas mesin. Kit Alat Teks menggunakan pengumpulan pelayar, lalai kepada perbandingan tidak sensitif huruf besar dan sedar angka, dan boleh membalikkan arah yang diminta.

Untuk persekitaran yang merangkumi pasukan, jadikan output sebagai kontrak: pilih satu sesi pelayar, tetapkan pilihan yang dimaksudkan, isih dan edarkan teks tepat itu. Apabila pesanan lain muncul, bandingkan artifak sebelum membahaskan abjad yang betul. Sumber menyokong penjelasan mekanisme, manakala hasil yang disimpan membekalkan urutan stabil pelaksanaan itu sendiri tidak menjamin secara global.