Bagaimana menghapus spasi putih duplikat (termasuk tab, baris baru, spasi, dll ...) dalam sebuah string menggunakan Java?
java
string
whitespace
bodoh
sumber
sumber
\s+
tetapi apa artinya 2 backslash \\?"\\"
mewakili string yang terdiri dari backslash tunggal. Jadi untuk mewakili\s+
Anda menulis"\\s+"
.Anda bisa menggunakan regex
dan
gantikan dengan
$1
.Kode Java:
Jika inputnya
"foo\t\tbar "
Anda akan mendapatkan"foo\tbar "
sebagai outputTetapi jika input
"foo\t bar"
itu akan tetap tidak berubah karena tidak memiliki karakter spasi spasi berturut-turut.Jika Anda memperlakukan semua karakter spasi (spasi, tab vertikal, horisontal tab, carriage return, bentuk pakan, baris baru) sebagai ruang maka Anda dapat menggunakan regex berikut untuk mengganti setiap jumlah ruang putih berturut-turut dengan satu ruang:
Tetapi jika Anda ingin mengganti dua spasi putih berturut-turut dengan satu ruang yang harus Anda lakukan:
sumber
Coba ini - Anda harus
import java.util.regex.*;
Di mana
string
string Anda di mana Anda perlu menghapus duplikat spasi putihsumber
hai tercepat (tapi bukan cara tercantik) yang saya temukan adalah
ini berjalan cukup cepat di android berlawanan dengan regex
sumber
sumber
Meskipun sudah terlambat, saya telah menemukan solusi yang lebih baik (yang bekerja untuk saya) yang akan menggantikan semua spasi putih yang sama berturut-turut dengan satu spasi putih dari tipenya. Itu adalah:
akan
Perhatikan masih ada ruang putih utama dan tertinggal. Jadi solusi lengkap saya adalah:
Di sini,
trim()
ganti semua string ruang putih terkemuka dan tertinggal dengan "".(\\s)
untuk menangkap\\s
(yaitu spasi putih seperti '', '\ n', '\ t') di grup # 1 .+
tanda untuk mencocokkan 1 atau lebih token sebelumnya. Jadi(\\s)+
dapat berupa karakter berurutan (1 atau lebih) di antara karakter spasi putih tunggal ('', '\ n' atau '\ t').$1
adalah untuk mengganti string yang cocok dengan string grup # 1 (yang hanya berisi 1 karakter spasi putih) dari jenis yang cocok (yaitu karakter spasi tunggal putih yang telah cocok). Solusi di atas akan berubah seperti ini:akan
Saya belum menemukan solusi di atas di sini jadi saya telah mempostingnya.
sumber
Jika Anda ingin menyingkirkan semua spasi putih asing yang mengarah dan tertinggal maka Anda ingin melakukan sesuatu seperti ini:
Kemudian Anda dapat menghapus duplikat menggunakan strategi lain yang tercantum di sini:
sumber
Anda juga dapat mencoba menggunakan Tokeniser Tali, untuk ruang, tab, baris baru, dan semua. Cara sederhana adalah,
sumber
Ini dapat dimungkinkan dalam tiga langkah:
sumber