ฉันต้องการค้นหาว่าสตริงมี "," (เครื่องหมายจุลภาค) อยู่หรือไม่ เรามีตัวเลือกอื่นนอกเหนือจากการอ่าน char-by-char หรือไม่?
ฉันต้องการค้นหาว่าสตริงมี "," (เครื่องหมายจุลภาค) อยู่หรือไม่ เรามีตัวเลือกอื่นนอกเหนือจากการอ่าน char-by-char หรือไม่?
คำตอบ:
ใช้ฟังก์ชั่นInstr
Dim pos As Integer
pos = InStr("find the comma, in the string", ",")
จะส่งคืน 15 ใน pos
หากไม่พบจะส่งคืนค่า 0
หากคุณต้องการค้นหาเครื่องหมายจุลภาคด้วยสูตร excel คุณสามารถใช้=FIND(",";A1)
ฟังก์ชันได้
โปรดสังเกตว่าหากคุณต้องการใช้Instr
เพื่อค้นหาตำแหน่งของสตริงที่ไม่ต้องคำนึงถึงตัวพิมพ์เล็กและใหญ่ให้ใช้พารามิเตอร์ที่สามของ Instr และให้ const vbTextCompare
(หรือเพียง 1 สำหรับ Die-hards)
Dim posOf_A As Integer
posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)
จะให้ค่า 14
โปรดทราบว่าคุณต้องระบุตำแหน่งเริ่มต้นในกรณีนี้ตามที่ระบุไว้ในสเปคที่ฉันเชื่อมโยง: อาร์กิวเมนต์เริ่มต้นเป็นสิ่งจำเป็นหากระบุการเปรียบเทียบ
คุณยังสามารถใช้คำพิเศษlike
:
Public Sub Search()
If "My Big String with, in the middle" Like "*,*" Then
Debug.Print ("Found ','")
End If
End Sub
นอกจากนี้ยังมีฟังก์ชั่นInStrRevซึ่งทำสิ่งประเภทเดียวกัน แต่เริ่มค้นหาจากจุดสิ้นสุดของข้อความถึงจุดเริ่มต้น
ต่อคำตอบของ @ rene ...
Dim pos As Integer
pos = InStrRev("find the comma, in the string", ",")
... จะยังคงคืนค่า 15 ให้เป็น pos แต่ถ้าสตริงมีมากกว่าหนึ่งในสตริงการค้นหาเช่นคำว่า "the" ดังนั้น:
Dim pos As Integer
pos = InStrRev("find the comma, in the string", "the")
... จะคืนค่า 20 ให้เป็น pos แทนที่จะเป็น 6
เมื่อสร้างคำตอบของ Rene คุณสามารถเขียนฟังก์ชันที่ส่งกลับค่า TRUE หากมีสตริงย่อยอยู่หรือเป็น FALSE หากไม่ใช่:
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
INSTR
ทำงานสำหรับคุณ?