Saya perlu membagi basis string pada pembatas -
dan .
. Di bawah ini adalah output yang saya inginkan.
AA.BB-CC-DD.zip
->
AA
BB
CC
DD
zip
tapi kode saya berikut ini tidak berfungsi.
private void getId(String pdfName){
String[]tokens = pdfName.split("-\\.");
}
AA
/BB
/CC
...)Jawaban:
Saya pikir Anda perlu menyertakan regex ATAU operator :
Apa yang Anda miliki akan cocok:
[DASH diikuti oleh DOT bersama]
-.
bukan
[DASH atau DOT salah satunya]
-
atau.
sumber
.
karakter dalam regex berarti karakter lain selain baris baru. tutorialspoint.com/java/java_regular_expressions.htm Namun, dalam kasus ini, mereka menginginkan karakter yang sebenarnya.
. Dua garis miring terbalik menunjukkan bahwa Anda merujuk.
. Garis miring terbalik adalah karakter pelarian..split("match1|match2")
, (mis.split("https|http")
), \\ adalah untuk melarikan diri char khusus.
dalam kasus di ataspdfName.split("\\W");
seperti di bawah ini @Peter Knego menjawab[-.]
sebagai ganti-|\\.
Coba regex ini
"[-.]+"
. Tanda + setelah memperlakukan karakter pembatas berturut-turut sebagai satu. Hapus plus jika Anda tidak menginginkan ini.sumber
-
adalah karena itu adalah pemikiran pertama di dalam[]
, jika tidak perlu ada backslash di depannya (dan tentu saja, untuk meletakkan backslash di depannya, kami perlu dua karena ini adalah string literal).Anda dapat menggunakan regex "\ W". Ini cocok dengan karakter non-kata. Baris yang diperlukan adalah:
sumber
\W
.String yang Anda berikan
split
adalah bentuk string dari ekspresi reguler, jadi:Itu berarti membagi karakter apa saja di dalam
[]
(kita harus melarikan diri-
dengan backslash karena itu spesial di dalamnya[]
; dan tentu saja kita harus melarikan diri dari backslash karena ini adalah string). (Sebaliknya,.
biasanya spesial tetapi tidak spesial di dalam[]
.)sumber
[-.]
tidak mungkin diartikan sebagai rentang.String[] strings = codes.get(x).split("\\[|\\]| ");
<- kode untuk siapa pun yang tertarikMenggunakan Jambu Biji, Anda bisa melakukan ini:
sumber
Untuk dua urutan char sebagai pembatas "AND" dan "OR" ini harus dikerjakan. Jangan lupa trim saat menggunakan.
Hasil: kota = {"ISTANBUL", "NEW YORK", "PARIS", "TOKYO", "MOSCOW"}
sumber
Saya akan menggunakan Apache Commons:
impor
org.apache.commons.lang3.StringUtils;
Itu akan terbelah pada pemisah yang ditentukan, sebagai lawan
StringUtils.splitByWholeSeparator(str, separator)
yang menggunakan string lengkap sebagai pemisahsumber
sumber
Lebih baik menggunakan sesuatu seperti ini:
Telah menambahkan beberapa karakter lain sebagai sampel. Ini adalah cara paling aman untuk digunakan, karena cara
.
dan'
perawatannya.sumber
Anda juga dapat menentukan ekspresi reguler sebagai argumen dalam metode split () .. lihat contoh di bawah ini ....
sumber
Coba kode ini:
sumber
harus bekerja.
sumber
Jika Anda tahu sengatannya akan selalu dalam format yang sama, pertama-tama pisahkan string berdasarkan
.
dan simpan string pada indeks pertama dalam sebuah variabel. Kemudian pisahkan string dalam indeks kedua berdasarkan-
dan menyimpan indeks 0, 1 dan 2. Akhirnya, pisahkan indeks 2 dari array sebelumnya berdasarkan.
dan Anda harus mendapatkan semua bidang yang relevan.Lihat cuplikan berikut:
sumber
pdfName.split(".")
menghasilkan array dengan panjang nol..
Perlu diloloskan sebagai\\.