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


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.