Penghapus Whitespace & Pembersih Teks
Bersihkan teks yang berantakan dengan menghapus spasi berlebih, tab, dan baris kosong.
Cara penggunaan
- Tempel teks Anda di area input.
- Pilih opsi pembersihan yang diinginkan (semua dicentang secara default).
- Klik Bersihkan teks untuk memproses.
- Salin atau unduh hasil yang dibersihkan.
Pertanyaan yang sering diajukan
Apa yang dianggap sebagai whitespace?
Spasi, tab, spasi tidak terputus, dan karakter spasi Unicode lainnya. Baris baru ditangani secara terpisah melalui opsi «baris kosong» dan «reduksi baris baru».
Apakah alat ini mengubah konten saya?
Tidak. Hanya menghapus atau mereduksi karakter whitespace. Kata, tanda baca, dan konten lain Anda tetap utuh.
Bisakah saya menggunakannya untuk kode?
Bisa, tetapi dengan hati-hati · menghapus spasi awal akan menghancurkan indentasi kode. Gunakan kotak centang individual untuk mengontrol secara tepat apa yang dibersihkan.
Apa yang sebenarnya dimaksud dengan «whitespace»
Karakter whitespace adalah karakter yang menghasilkan spasi kosong saat teks dirender, bukan glyph yang terlihat, digunakan untuk memisahkan kata, mengindentasi baris, dan memecah paragraf. Unicode Character Database menetapkan properti formal White_Space tepat untuk 25 code point. Tersangka yang sudah dikenal (spasi, tab, line feed, carriage return) mencakup sebagian besar apa yang akan Anda tempel, tetapi daftar lengkapnya juga mencakup spasi non-breaking (U+00A0), spasi non-breaking sempit (U+202F), 11 spasi tipografi dalam rentang U+2000-U+200A, pemisah baris dan paragraf (U+2028, U+2029), spasi matematika sedang (U+205F), dan spasi ideografis lebar penuh (U+3000) yang digunakan setelah tanda baca CJK.
Kelompok terpisah terlihat tidak terlihat tetapi tidak diklasifikasikan sebagai whitespace oleh Unicode: byte-order mark (U+FEFF), zero-width space (U+200B), zero-width joiner dan non-joiner (U+200D, U+200C), word joiner (U+2060), dan soft hyphen (U+00AD). Ini adalah kontrol pemformatan, bukan spasi, sebagian besar laporan «sudah dibersihkan tapi masih ada yang salah» berasal dari salah satunya.
Yang dilakukan alat ini, opsi per opsi
- Trim spasi leading/trailing per baris: menghapus whitespace di awal dan akhir setiap baris individual. Berguna untuk membersihkan kutipan yang diindentasi dari email, atau right-padding yang tidak sengaja ditambahkan saat salin-tempel.
- Ciutkan beberapa spasi menjadi satu: rangkaian dua atau lebih spasi menjadi satu spasi. Menangani kebiasaan mesin tik double-spacing setelah titik (yang sebagian besar panduan gaya modern (Chicago, AP) tidak anjurkan).
- Hapus baris kosong: menghapus baris apa pun yang kosong atau hanya berisi whitespace. Kebutuhan umum setelah menempel teks dari PDF.
- Konversi tab ke spasi: mengganti setiap
\tdengan spasi. Berhati-hatilah dalam kode: Python dan YAML sensitif terhadap whitespace, dan Makefile benar-benar membutuhkan indentasi tab pada baris resep. - Trim seluruh teks start/end: menghapus whitespace leading dan trailing dari seluruh string sekaligus (setara dengan
trim()JavaScript). - Ciutkan beberapa newline menjadi satu: rangkaian karakter newline yang berurutan menjadi satu newline. Berguna ketika «Hapus baris kosong» terlalu agresif dan Anda ingin mempertahankan satu baris kosong untuk pemisah paragraf.
Keenam opsi adalah toggle independen (hapus centang yang ingin Anda lewati) dan masing-masing hanya berjalan pada teks yang Anda tempel. Tidak ada yang diunggah; pembersihan terjadi di browser Anda melalui regex pass JavaScript.
Kapan Anda akan menggunakannya
- PDF dan dokumen Word. PDF menyisipkan hard line break di akhir visual setiap baris dan terkadang mempertahankan tanda hubung; teks Word yang ditempel sering memiliki spasi non-breaking antara angka dan satuan (10 km), di sekitar tanda baca Prancis, atau setelah honorifik seperti Mr. Smith.
- Menormalisasi input pengguna. Spasi trailing di bidang «Nama» atau email menyebabkan
"Smith"dan"Smith "dibandingkan tidak sama. Menghapusnya saat input (atau sebelum pencarian) menghilangkan seluruh kelas bug «pengguna tidak ditemukan». - Persiapan CSV dan TSV. Nilai field dengan spasi leading atau trailing merusak parser downstream yang mengharapkan kunci exact-match. Ekspor CSV UTF-8 Excel secara diam-diam menambahkan byte-order mark di depan, yang akan dilihat parser downstream yang tidak menghapus BOM sebagai bagian dari header kolom pertama, menghasilkan
colnameyang terlihat aneh. - Draf Markdown dan blog. Beberapa baris kosong berturut-turut dirender sebagai satu blok di Markdown tetapi membuat file sumber membengkak dan diff menjadi berisik.
- Tanda tangan email, transkrip obrolan, dan identifier: pembersihan cepat sebelum menempelkannya ke dokumen lain, atau sebelum mengirimkan kode promo atau kunci lisensi ke API yang ketat tentang whitespace.
Gotcha umum
- Menghapus whitespace leading merusak kode. Python dan YAML menggunakan indentasi sebagai sintaks. Hapus dan file terlihat identik di mata tetapi tidak akan bisa di-parse.
- Konversi tab merusak Makefile. GNU make menolak berjalan jika baris resep diindentasi dengan spasi alih-alih tab. Peringatan yang sama berlaku untuk output gofmt Go.
- NBSP terlihat identik dengan spasi. Pengguna sering melihat satu «spasi» antara dua kata dan mengira setiap pembersih akan menangkapnya. Regex
\sJavaScript memang cocok dengan spasi non-breaking di browser modern, tetapi jika Anda menulis regex sendiri di bahasa lain (atau lingkungan yang sangat lama) Anda mungkin perlu mencantumkan NBSP secara eksplisit. - Whitespace trailing di Markdown bermakna. Dua spasi trailing di akhir baris Markdown membuat jeda baris
<br>. Memotong whitespace trailing per baris menghapus jeda baris tersebut; jika Anda bergantung padanya, biarkan opsi ini dimatikan. - Line ending Windows. File yang disalin dari sumber Windows menggunakan CRLF (
\r\n). Pass «hapus baris kosong» dan «ciutkan newline» perlu mengenali CR; jika tidak,\ryang tersesat dapat bertahan di akhir setiap baris. - Karakter zero-width bertahan setelah penghapusan whitespace. ZWSP (U+200B), ZWJ (U+200D), ZWNJ (U+200C), word joiner (U+2060), dan soft hyphen (U+00AD) bukan whitespace Unicode, sehingga pembersih whitespace generik tidak akan menyentuhnya. Jika teks Anda terasa aneh setelah dibersihkan, tempel ke hex viewer atau inspector karakter tak terlihat terpisah.
- Rasio antara input dan output. Pembersihan tidak dapat dibatalkan di dalam halaman ini setelah Anda menyalin atau menutupnya, tidak ada riwayat undo. Simpan aslinya jika mungkin Anda membutuhkannya.
Konteks teknis singkat
Alat ini berjalan sepenuhnya di browser Anda menggunakan mesin regex bawaan JavaScript. String.prototype.trim() di mesin modern (setiap evergreen browser sejak sekitar 2015) menghapus spasi non-breaking dan byte-order mark, karena spec ECMAScript mendefinisikan set trim-nya sebagai gabungan produksi WhiteSpace dan LineTerminator, daftar yang mencakup tab, spasi biasa, NBSP, BOM, spasi tipografi, dan jeda baris CR / LF / LS / PS. Ini mengecualikan hanya satu karakter whitespace Unicode, U+0085 (NEL), yang merupakan keistimewaan yang diwarisi dari EBCDIC dan hampir tidak pernah muncul di teks modern.
Untuk input yang sangat besar, bagian yang lambat jarang adalah regex pass, melainkan penulisan hasil kembali ke textarea dan re-rendering DOM. Input hingga beberapa megabyte biasanya baik-baik saja di laptop modern; lebih dari itu, alat command-line (tr, sed, awk, atau skrip Python singkat) biasanya lebih cepat.
Pertanyaan lainnya
Apa perbedaan antara spasi biasa dan spasi non-breaking?
Keduanya dirender dengan lebar yang sama tetapi spasi non-breaking (NBSP, U+00A0) memberi tahu renderer untuk tidak memecah baris di titik tersebut. Word, Google Docs, dan banyak CMS menyisipkannya antara honorifik dan nama belakang (Mr. Smith), antara angka dan satuan (10 km), atau di sekitar simbol mata uang ($ 5). Ini adalah karakter «aneh» yang paling umum ditemukan dalam teks yang ditempel, dan itulah mengapa celah yang terlihat sama antara dua kata terkadang tidak tertangkap oleh regex yang ditulis untuk spasi biasa.
Apakah ini akan menghapus karakter zero-width atau byte-order mark?
Penanganan whitespace JavaScript umumnya menangkap byte-order mark (U+FEFF). Ia tidak menangkap zero-width space (U+200B), zero-width joiner (U+200D), zero-width non-joiner (U+200C), word joiner (U+2060), atau soft hyphen (U+00AD), Unicode tidak mengklasifikasikan hal-hal tersebut sebagai whitespace, sehingga mereka bertahan setelah whitespace pass sesuai desain. Jika Anda menduga salah satunya ada di teks Anda, Anda perlu inspector karakter tak terlihat.
Mengapa baris kosong dan beberapa newline merupakan dua opsi terpisah?
«Hapus baris kosong» menghapus setiap baris kosong, hasilnya adalah satu blok teks berkelanjutan tanpa pemisah paragraf. «Ciutkan beberapa newline menjadi satu» mempertahankan satu newline antar paragraf dan hanya menghapus yang ekstra. Jika Anda menginginkan paragraf yang dapat dibaca di keluaran, biarkan opsi pertama dimatikan dan gunakan yang kedua.
Apakah ada batas panjang?
Tidak ada batas yang keras, alat ini dapat menangani teks dalam kisaran puluhan ribu hingga beberapa juta karakter di laptop modern. Batasnya adalah performa textarea browser Anda: penempelan yang sangat besar mulai terasa lambat saat mengetik atau menyalin, bukan saat langkah pembersihan itu sendiri.
Apakah ada yang dikirim ke server?
Tidak. Teks tidak pernah meninggalkan browser Anda. Pembersihan berjalan secara lokal di JavaScript, hasilnya ditulis kembali ke textarea di halaman yang sama, dan Anda dapat menggunakan halaman ini secara offline setelah dimuat. Hal yang sama berlaku untuk setiap alat di Absolutool.