Konversi huruf besar-kecil, pembedaan, penghitungan, pelolosan, dan pembersihan spasi untuk teks.
Daftar teks tiba dalam kondisi buruk. Kolom email yang ditempelkan dari spreadsheet memiliki spasi tambahan di setiap baris. Kutipan log memiliki baris duplikat. Daftar yang disalin dari PDF memiliki garis putus-putus di tengah kalimat. Tak satu pun dari hal ini merupakan masalah yang sulit, namun melakukannya dengan tangan dalam empat ratus baris adalah hal yang menyedihkan, dan menggunakan bahasa skrip untuk pembersihan satu kali lebih lambat dari kedengarannya.
Semuanya di sini beroperasi berdasarkan teks pada kotak di atas. Setiap tombol adalah satu transformasi, diterapkan ke seluruh teks, dan setiap tombol dapat dibatalkan. Bekerjalah dalam langkah-langkah kecil dan periksa hitungannya seiring berjalannya waktu.
Ketertiban lebih penting daripada yang diharapkan orang. Memangkas sebelum menghapus duplikat hampir selalu benar: dua garis yang hanya berbeda spasi di belakangnya tidak akan terduplikasi sampai Anda memangkasnya, jadi menghapus duplikat terlebih dahulu secara diam-diam akan membiarkan keduanya tetap di tempatnya.
Demikian pula, hapus baris kosong sebelum mengurutkan jika Anda menginginkan hasil yang ringkas, karena baris kosong diurutkan ke salah satu ujung dan meninggalkan celah sehingga Anda tetap harus menghapusnya.
Panel statistik diperbarui saat Anda mengetik. Sebagian besar sudah cukup jelas, tetapi jumlah karakter perlu diperhatikan, karena ini adalah jumlah kesalahan yang paling banyak dilakukan alat.
Komputer menyimpan teks sebagai jaringan unit kode, dan satu karakter yang terlihat dapat menempati beberapa unit kode. Emoji 👩💻 adalah sesuatu yang dapat Anda lihat, tetapi emoji ini dibuat dari emoji wanita, penghubung tak kasat mata, dan emoji laptop — totalnya ada lima unit kode. Penghitung yang naif melaporkan 5. Alat ini menghitung kelompok grafem, yang merupakan nama teknis untuk "apa yang disebut seseorang sebagai satu karakter", sehingga alat ini melaporkan 1.
Logika yang sama berlaku untuk karakter beraksen yang ditulis dengan tanda gabungan, dan untuk menandai emoji. Jika Anda menghitung berdasarkan batasan yang diterapkan oleh sistem lain — kolom database, gateway SMS, platform sosial — ketahuilah bahwa sistem lain mungkin menghitung secara berbeda.
Tombol ekstraksi menarik email, URL, atau nomor dari teks tidak terstruktur dan memberikannya kepada Anda sebagai daftar yang bersih, tidak terduplikasi, dan dalam urutan tampilan.
URL ekstraksi strip di belakang tanda baca kalimat, jadi "kunjungi https://example.com." menghasilkan URL tanpa titik, dan berhenti di tanda kurung tutup sehingga URL di dalam tanda kurung terlihat bersih.
Pencocokan email sengaja dilakukan secara pragmatis, bukan menyeluruh. Spesifikasi lengkap untuk alamat email yang valid memungkinkan konstruksi yang pada dasarnya tidak digunakan oleh siapa pun, dan mencocokkan semuanya menghasilkan hasil yang lebih buruk pada teks sebenarnya dibandingkan dengan pola yang lebih ketat.
Mengubah "hello world" menjadi camelCase itu mudah. Mengonversi parseHTTPResponse2Json adalah saat alat tidak setuju, karena batasannya tersirat dan bukannya ditandai.
Alat ini terbagi menjadi tiga sinyal: jaringan karakter non-huruf dan non-digit (spasi, tanda hubung, garis bawah, tanda baca); huruf kecil atau angka diikuti huruf besar; dan jaringan huruf besar diikuti dengan pasangan huruf besar lalu huruf kecil. Aturan terakhir itulah yang dengan benar memisahkan "HTTP" dari "Respon" di parseHTTPResponse, daripada menghasilkan respons p-a-r-s-e-h-t-t-p atau memperlakukan seluruh akronim sebagai satu kata yang direkatkan ke kata berikutnya.
Hasilnya adalah parseHTTPResponse menjadi parse_http_response dalam kasus ular dan parse-http-response dalam kasus kebab, yang diharapkan oleh sebagian besar panduan gaya.
Huruf kapital pada huruf pertama setiap kata dan huruf kecil pada huruf lainnya, sehingga "hello WORLD" menjadi "Hello World". Ia tidak mengetahui tentang aturan panduan gaya yang menggunakan kata-kata pendek seperti "of" dan "the" dalam huruf kecil, karena aturan tersebut berbeda-beda menurut publikasi dan menerapkannya secara diam-diam hanyalah sebuah tebakan.
Kapitalisasi kalimat memperkecil semuanya lalu menggunakan huruf besar pada huruf pertama setiap kalimat, mendeteksi akhiran kalimat dengan titik, tanda tanya, dan tanda seru, termasuk padanan CJK lebar penuhnya. Ini adalah pilihan yang tepat untuk SMS yang tiba di ALL CAPS.
Transformasi slug menghasilkan pengidentifikasi aman URL: huruf kecil, aksen dilipat ke huruf dasarnya, dan setiap karakter non-alfanumerik diganti dengan satu tanda hubung.
Pelipatan aksen dilakukan dengan menguraikan karakter dan menghilangkan tanda penggabungan, sehingga "Café Crème" menjadi "cafe-creme" dan bukan "caf-cr-me". Menghilangkan seluruh huruf beraksen adalah bug umum di generator slug dan merusak nama.
Pemisah awal dan akhir dihilangkan, dan emoji serta simbol lainnya dihapus, karena tidak memiliki representasi URL yang berguna.
Temukan dan ganti memiliki dua mode. Mode literal — defaultnya — lolos dari setiap karakter khusus, jadi penelusuran "a.b" akan menemukan "a.b" dan bukan "axb". Mode regex meneruskan pola Anda apa adanya.
Setiap pola yang Anda ketik dikompilasi di dalam penjaga. Jika tidak valid, Anda mendapat pesan yang menjelaskan masalahnya dan teks Anda tidak tersentuh. Hal ini lebih penting daripada kedengarannya: mengetikkan ekspresi reguler adalah proses tambahan, dan satu-satunya "(" adalah keadaan perantara yang sangat normal menuju pola kerja. Alat yang memunculkan kesalahan yang tidak tertangani pada saat itu — atau lebih buruk lagi, menghapus kotak tersebut — tidak dapat digunakan.
Dalam mode regex, penggantian mendukung grup penangkapan dengan $1, $2 dan seterusnya. Memformat ulang tanggal adalah contoh kanonik: temukan (\d{4})-(\d{2})-(\d{2}) dan ganti dengan $3/$2/$1 untuk mengubah 2024-01-02 menjadi 02/01/2024.
Opsi "Seluruh kata" membungkus pencarian Anda dalam batasan kata, jadi pencarian "cat" cocok dengan kata cat tetapi bukan "cat" di dalam "concatenate".
Ini disusun dengan kedua mode. Dalam mode literal, teks Anda di-escape terlebih dahulu dan kemudian dibatasi; dalam mode regex seluruh pola Anda dibatasi sebagai sebuah grup, jadi pergantian seperti cat|dog berperilaku seperti yang Anda harapkan daripada mengikat batas hanya pada cabang pertama.