Periksa apakah string berisi string lain


233

Saya ingin mencari apakah string berisi "," (koma) di dalamnya. Apakah kita punya pilihan lain selain membaca char-by-char?


14
Apakah INSTRberhasil untuk Anda?
Stephen Quan

Jawaban:


386

Gunakan fungsi Instr

Dim pos As Integer

pos = InStr("find the comma, in the string", ",")

akan mengembalikan 15 dalam pos

Jika tidak ditemukan akan mengembalikan 0

Jika Anda perlu menemukan koma dengan rumus excel, Anda dapat menggunakan =FIND(",";A1)fungsi ini.

Perhatikan bahwa jika Anda ingin menggunakan Instruntuk menemukan posisi string case-insensitive gunakan parameter ketiga dari Instr dan berikan const vbTextCompare(atau hanya 1 untuk die-hards).

Dim posOf_A As Integer

posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)

akan memberi Anda nilai 14.

Perhatikan bahwa Anda harus menentukan posisi awal dalam kasus ini seperti yang dinyatakan dalam spesifikasi yang ditautkan: Argumen awal diperlukan jika perbandingan ditentukan.


4
Tetapi bagaimana jika string yang ditemukan ada di posisi 0? Bagaimana Anda membedakan antara "ditemukan pada indeks 0" dan "tidak ditemukan (0)"?
gEdringer

10
@ gEdringer. Ketika string yang ditemukan adalah pada awalnya, string akan mengembalikan 1.
rene


23

Ada juga InStrRev fungsi yang melakukan jenis hal yang sama, tetapi mulai mencari dari akhir teks ke awal.

Per @ rene menjawab ...

Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")

... masih akan mengembalikan 15 ke pos, tetapi jika string memiliki lebih dari satu string pencarian, seperti kata "the", maka:

Dim pos As Integer
pos = InStrRev("find the comma, in the string", "the")

... akan mengembalikan 20 ke pos, bukannya 6.


17

Berdasarkan jawaban Rene, Anda juga bisa menulis fungsi yang mengembalikan TRUE jika substring ada, atau FALSE jika bukan:

Public Function Contains(strBaseString As String, strSearchTerm As String) As Boolean
'Purpose: Returns TRUE if one string exists within another
On Error GoTo ErrorMessage
    Contains = InStr(strBaseString, strSearchTerm)
Exit Function
ErrorMessage:
MsgBox "The database has generated an error. Please contact the database administrator, quoting the following error message: '" & Err.Description & "'", vbCritical, "Database Error"
End
End Function

3
Apa jenis kesalahan database yang kita harapkan dalam fungsi ini? Perangkap kesalahan dan pesan kesalahan tampaknya sama sekali tidak ada gunanya.
Roobie Nuby

11
@RoobieNuby Itu hanya penanganan kesalahan default saya. Saya memasukkannya ke dalam semua fungsi saya karena jika terjadi kesalahan, saya ingin staf memanggil saya, bukan untuk mencoba dan memperbaikinya sendiri.
Jenggot Seram
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.