Saya memiliki string seperti ini:
mysz = "name=john age=13 year=2001";
Saya ingin menghapus spasi putih di string. Saya mencoba trim()
tetapi ini hanya menghapus spasi putih sebelum dan sesudah seluruh string. Saya juga mencoba replaceAll("\\W", "")
tetapi kemudian =
juga akan dihapus.
Bagaimana saya bisa mencapai string dengan:
mysz2 = "name=johnage=13year=2001"
java
whitespace
zyamat
sumber
sumber
\\W
berarti semua yang bukan kata-kata dapat melihat download.oracle.com/javase/6/docs/api/java/util/regex/…Jawaban:
st.replaceAll("\\s+","")
menghapus semua spasi putih dan karakter yang tidak terlihat (misalnya, tab,\n
).st.replaceAll("\\s+","")
danst.replaceAll("\\s","")
menghasilkan hasil yang sama.Regex kedua adalah 20% lebih cepat dari yang pertama, tetapi karena jumlah ruang berturut-turut meningkat, yang pertama berkinerja lebih baik daripada yang kedua.
Tetapkan nilai ke variabel, jika tidak digunakan secara langsung:
sumber
\w
= Apa pun yang merupakan karakter kata\W
= Apa pun yang bukan karakter kata (termasuk tanda baca, dll.)\s
= Apa pun yang merupakan karakter spasi (termasuk spasi, karakter tab, dll.)\S
= Apa pun yang bukan karakter spasi (termasuk huruf dan angka, serta tanda baca dll)(Sunting: Seperti yang ditunjukkan, Anda harus menghindari backslash jika Anda ingin
\s
mencapai mesin regex, menghasilkan\\s
.)sumber
Jawaban paling benar untuk pertanyaan ini adalah:
Saya baru saja mengadaptasi kode ini dari jawaban lain. Saya mempostingnya karena selain persis apa yang diminta pertanyaan, itu juga menunjukkan bahwa hasilnya dikembalikan sebagai string baru, string asli tidak dimodifikasi karena beberapa jawaban menyiratkan semacam itu.
(Pengembang Java yang berpengalaman mungkin mengatakan "tentu saja, Anda tidak dapat benar-benar memodifikasi sebuah String", tetapi audiens target untuk pertanyaan ini mungkin tidak mengetahui hal ini.)
sumber
S
tetapi tidak menimpa string yangS
menunjuk.Bagaimana
replaceAll("\\s", "")
. Rujuk ke sini .sumber
Salah satu cara untuk menangani manipulasi String adalah StringUtils dari Apache commons.
Anda dapat menemukannya di sini . commons-lang menyertakan lebih banyak dan didukung dengan baik.
sumber
Jika Anda perlu menghapus ruang yang tidak bisa dipecahkan juga, Anda dapat meningkatkan kode Anda seperti ini:
sumber
" ab c "
Jika Anda lebih suka kelas utilitas daripada regex, ada metode trimAllWhitespace (String) di StringUtils di Spring Framework.
sumber
Anda sudah mendapatkan jawaban yang benar dari Gursel Koca, tetapi saya percaya bahwa ada peluang bagus bahwa ini bukan yang benar-benar ingin Anda lakukan. Bagaimana kalau parsing nilai-nilai kunci saja?
sumber
Kamu harus menggunakan
dari pada:
Dengan cara ini, ini akan bekerja dengan lebih dari satu spasi di antara setiap string. Tanda + pada regex di atas berarti "satu atau lebih"
sumber
replaceAll
pengulangan sampai pola tidak cocok dengan bagian mana pun dari string.+
mungkin membuatnya sedikit lebih CPU ramah, karena spasi berturut-turut ditangani dalam satu menggantikan operasi, tapi itu satu-satunya perbedaan dalam hal ini. Memang ituAll
, bukan+
yang menggantikan spasi putih non-berturut-turut dalam string.Cara termudah untuk melakukan ini adalah dengan menggunakan
org.apache.commons.lang3.StringUtils
kelascommons-lang3
perpustakaan seperti "commons-lang3-3.1.jar
" misalnya.Gunakan metode statis "
StringUtils.deleteWhitespace(String str)
" pada string input Anda & itu akan mengembalikan Anda string setelah menghapus semua spasi putih dari itu. Saya mencoba contoh string Anda "name=john age=13 year=2001
" & mengembalikan saya string yang tepat yang Anda inginkan - "name=johnage=13year=2001
". Semoga ini membantu.sumber
Anda dapat melakukannya hanya dengan
sumber
sumber
// itu bekerja dengan baik dengan spasi apa pun * jangan lupa ruang dalam sengatan b
sumber
\W
berarti "karakter bukan kata". Pola untuk karakter spasi adalah\s
. Ini didokumentasikan dengan baik di Pattern javadoc .sumber
Di java kita bisa melakukan operasi berikut:
untuk ini, Anda perlu mengimpor paket berikut ke program Anda:
Saya harap ini akan membantu Anda.
sumber
Menggunakan Pattern And Matcher lebih dinamis.
sumber
Menggunakan
mysz.replaceAll("\\s+","");
sumber
Gunakan apache string util class lebih baik untuk menghindari NullPointerException
Keluaran
sumber
Saat menggunakan
st.replaceAll("\\s+","")
di Kotlin , pastikan Anda membungkus"\\s+"
dengan Regex :sumber
Pertama dengan ruang, kedua tanpa ruang.
Kemudian selesai.
sumber
[ \t\n\x0B\f\r]
. Anda hanya melakukan[ ]
ruang normal .sumber
ada banyak cara untuk mengatasi masalah ini. Anda dapat menggunakan fungsi split atau mengganti fungsi Strings.
untuk info lebih lanjut lihat masalah smilliar http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html
sumber
Untuk menghapus spasi dalam contoh Anda, ini adalah cara lain untuk melakukannya:
Apa yang dilakukan adalah mengubahnya menjadi array dengan spasi sebagai pemisah, dan kemudian menggabungkan item dalam array bersama-sama tanpa spasi.
Ini bekerja dengan cukup baik dan mudah dimengerti.
sumber
Ada yang lain spasi char juga ada di string .. Jadi space char kita mungkin perlu mengganti dari string.
Mis: RUANG NO-BREAK, RUANG TIGA-PER-EM, RUANG PUNCTUATION
Berikut adalah daftar char space http://jkorpela.fi/chars/spaces.html
Jadi kita perlu memodifikasi
\ u2004 kami untuk TIGA PER PER EMISI
s.replaceAll ("[\ u0020 \ u2004]", "")
sumber
Ruang putih dapat menghapus menggunakan fungsi isWhitespace dari Kelas Karakter.
sumber
Pisahkan setiap grup teks ke dalam substringnya sendiri dan kemudian gabungkan substring tersebut:
sumber
Ini mungkin bisa membantu.
sumber
Anda juga dapat melihat kode Java di bawah ini. Kode berikut tidak menggunakan metode "bawaan" apa pun.
Memasukkan:
Keluaran:
sumber
sumber
Cukup banyak jawaban yang diberikan. Saya ingin memberikan solusi yang cukup mudah dibaca dan lebih baik daripada regex.
sumber