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


233

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


14
당신을 INSTR위해 작동 합니까 ?
Stephen Quan

답변:


386

사용 측량기의 기능을

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의 가치를 줄 것입니다.

이 경우 링크 된 사양에 명시된대로 시작 위치를 지정해야 합니다. 비교가 지정된 경우 시작 인수가 필요합니다.


4
그러나 찾은 문자열이 0 위치에 있으면 어떻게합니까? "index 0에서 발견"과 "찾을 수 없음 (0)"을 어떻게 구별합니까?
gEdringer

10
@gEdringer. 찾을 문자열이 시작되면 1을 반환합니다.
rene


23

동일한 유형의 작업을 수행하지만 텍스트의 끝에서 시작으로 검색을 시작 하는 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로 되돌립니다.


17

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

3
이 함수에서 어떤 종류의 데이터베이스 오류가 예상됩니까? 오류 트래핑과 오류 메시지는 전혀 의미가없는 것 같습니다.
Roobie Nuby 2014

11
@RoobieNuby 기본 오류 처리입니다. 문제가 발생하면 직원이 직접 전화를 걸어 문제를 해결하지 않기를 원하기 때문에 모든 기능에 적용했습니다.
불길한 수염
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.