[string] 문자열에 다른 문자열이 포함되어 있는지 확인

문자열에 “,”(쉼표)가 들어 있는지 확인하고 싶습니다. char-by-char를 읽는 것 이외의 다른 옵션이 있습니까?



답변

사용 측량기의 기능을

Dim pos As Integer

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

pos에서 15를 반환합니다

찾지 못하면 0을 반환합니다

엑셀 수식으로 쉼표를 찾아야하는 경우 =FIND(",";A1)함수를 사용할 수 있습니다 .

Instr대소 문자를 구분하지 않는 문자열의 위치를 ​​찾는 데 사용 하려면 Instr의 세 번째 매개 변수를 사용하고 const vbTextCompare(또는 다이 하드의 경우 1)를 제공하십시오.

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")

… 6 대신 20을 pos로 되돌립니다.


답변

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


답변