Bagaimana cara menguji string untuk melihat apakah string berisi salah satu string dari array?
Alih-alih menggunakan
if (string.contains(item1) || string.contains(item2) || string.contains(item3))
java
string
coding-style
if-statement
arowell
sumber
sumber
Jawaban:
EDIT: Ini adalah pembaruan menggunakan Java 8 Streaming API. Jauh lebih bersih. Masih bisa dikombinasikan dengan ekspresi reguler juga.
Juga, jika kita mengubah tipe input ke Daftar, bukan array yang bisa kita gunakan
items.parallelStream().anyMatch(inputStr::contains)
.Anda juga dapat menggunakan
.filter(inputStr::contains).findAny()
jika Anda ingin mengembalikan string yang cocok.Jawaban asli yang sedikit bertanggal:
Berikut adalah metode statis (SANGAT DASAR). Perhatikan bahwa case sensitif pada string perbandingan. Cara primitif untuk membuatnya case sensitive adalah dengan memanggil
toLowerCase()
atautoUpperCase()
pada kedua input dan string tes.Jika Anda perlu melakukan sesuatu yang lebih rumit dari ini, saya akan merekomendasikan melihat kelas Pattern and Matcher dan belajar bagaimana melakukan beberapa ekspresi reguler. Setelah Anda memahami itu, Anda bisa menggunakan kelas-kelas itu atau
String.matches()
metode helper.sumber
Utilitas Tali
Menggunakan:
Ini akan mengembalikan indeks dari string yang ditemukan atau -1 jika tidak ada yang ditemukan.
sumber
Anda dapat menggunakan metode String # cocok seperti ini:
sumber
Cara termudah mungkin adalah dengan mengubah array menjadi java.util.ArrayList. Setelah berada dalam daftar array, Anda dapat dengan mudah memanfaatkan metode berisi.
sumber
string
berisiString
s dalam array, bukan jika adaString
dalam arraystring
..equals()
pos mereka, yang sangat membingungkan. Saya rasa mereka perlu mengedit pertanyaan merekaJika Anda menggunakan Java 8 atau lebih tinggi, Anda bisa mengandalkan Stream API untuk melakukan hal seperti itu:
Dengan asumsi bahwa Anda memiliki array besar
String
untuk menguji Anda juga bisa meluncurkan pencarian secara paralel dengan meneleponparallel()
, kode itu kemudian menjadi:sumber
Berikut ini satu solusinya:
sumber
Sejak versi 3.4 Apache umum Lang 3 melaksanakan containsAny metode.
sumber
Pendekatan yang lebih groovyesque adalah menggunakan suntikan dalam kombinasi dengan metaClass :
Saya ingin mengatakan:
Dan metodenya adalah:
Jika Anda membutuhkan Containny untuk hadir untuk variabel String di masa mendatang, tambahkan metode ke kelas, bukan objek:
sumber
Coba ini:
sumber
Dan jika Anda mencari kecocokan huruf besar-kecil, gunakan pola
sumber
Jika Anda seraching untuk seluruh kata Anda dapat melakukan ini yang bekerja case- sensitive .
sumber
Kita juga bisa melakukan ini:
sumber
Di bawah ini akan berfungsi untuk Anda dengan asumsi Strings adalah array yang Anda cari di dalam:
di mana mykeytosearch adalah string yang ingin Anda uji keberadaannya dalam array. mysearchComparator - adalah pembanding yang akan digunakan untuk membandingkan string.
Lihat Arrays.binarySearch untuk informasi lebih lanjut.
sumber
sumber