문자열에 다른 문자열이 포함되어 있는지 확인합니다.
문자열에 ","(쉼표)가 포함되어 있는지 확인합니다.차 바이 차르 읽는 것 말고 다른 방법이 있나요?
Instr 함수 사용(MSDN 문서의 이전 버전은 여기에 있음)
Dim pos As Integer
pos = InStr("find the comma, in the string", ",")
POS로 15를 반환한다.
찾을 수 없는 경우 0이 반환됩니다.
Excel 수식을 사용하여 콤마를 찾으려면=FIND(",";A1)
기능.
를 사용하고 싶은 경우 주의해당 기능에 주의해 주세요.Instr
문자열의 위치를 찾으려면 대/소문자를 구분하지 않습니다.Instr의 세 번째 매개 변수를 사용하여 대/소문자를 구분하지 않습니다.vbTextCompare
(또는 다이하드일 경우 1개만).
Dim posOf_A As Integer
posOf_A = InStr(1, "find the comma, in the string", "A", vbTextCompare)
값은 14입니다.
이 경우 링크된 사양에 명시된 대로 시작 위치를 지정해야 합니다.비교가 지정된 경우 start 인수는 필수입니다.
당신은 또한 특별한 단어를 사용할 수 있습니다.like
:
Public Sub Search()
If "My Big String with, in the middle" Like "*,*" Then
Debug.Print ("Found ','")
End If
End Sub
같은 종류의 작업을 수행하지만 텍스트의 끝에서 끝까지 검색을 시작하는 InStrRev 기능도 있습니다.
@ren의 답변에 따르면...
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개를 포스로 돌려보낼 거야
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/InstrRev 함수에서는 이 작업을 하고 싶지 않지만 VBA 내에서 EXCEL 워크시트 함수의 결과를 반환하기 위해 EVALUP을 사용하면 편리할 수 있습니다.
Option Explicit
Public Sub test()
Debug.Print ContainsSubString("bc", "abc,d")
End Sub
Public Function ContainsSubString(ByVal substring As String, ByVal testString As String) As Boolean
'substring = string to test for; testString = string to search
ContainsSubString = Evaluate("=ISNUMBER(FIND(" & Chr$(34) & substring & Chr$(34) & ", " & Chr$(34) & testString & Chr$(34) & "))")
End Function
열거된 가능성을 보완하기 위해 옵션 인수에 따라 다음과 같은 변형으로 어떻게 만능 기능을 사용할 수 있는지 시연하고 싶습니다.n
통과:
- a) 서브스트링이 검출되었는지 여부(-1 또는 디폴트값으로 생략되었는지)를 나타냅니다.
- b) 검출된 서브스트링의 수를 나타냅니다(0).
- c) n번째 서브스트링이 발견된 위치를 표시합니다(1 .. n).
Function StrIncludes( _
ByVal s As String, _
Optional ByVal IncludeString As String = ",", _
Optional n As Long = -1 _
) As Long
'Purp.: find specified substring based on numeric value n
'Note : 2nd argument IncludeString is optional (default value is comma if omitted)
' 3rd argument n: -1~~>only boolean; 0~~>count(s); 1..n ~~>position
Dim tmp: tmp = Split(s, IncludeString)
StrIncludes = UBound(tmp) > 0 ' a) boolean return value indicating a found substring
Select Case n ' individual numeric values:
Case 0 ' b) return Count(s), not boolean value
StrIncludes = UBound(tmp)
Case 1
StrIncludes = IIf(StrIncludes, Len(tmp(n - 1)) + n, 0)
Case Is > 1 ' c) return Position of nth finding
If n > UBound(tmp) Then StrIncludes = 0: Exit Function
StrIncludes = IIf(StrIncludes, Len(tmp(0)) + n, 0)
Dim i As Long
For i = 2 To n: StrIncludes = StrIncludes + Len(tmp(i - 1)): Next
End Select
End Function
콜 예시
Sub ExampleCall()
' define base string
Dim s As String
s = "Take this example string, does it contain a comma, doesn't it?"
'a) check if base string contains indicated search string, e.g. a comma (default value)
Debug.Print "Is Found: " & CBool(StrIncludes(s)) ' ~~> Is Found: True
'b) get number of substrings
Debug.Print "Count(s): " & StrIncludes(s, , 0) ' ~~> Count(s): 2
'c) get position of nth substring
Debug.Print "~~~ Findings of nth substring ~~~ "
Dim n As Long
For n = 1 To 3
Debug.Print n & ordinalSuffix(n) & " substring at Pos.: " & StrIncludes(s, , n)
Next
End Sub
Function ordinalSuffix(ByVal number As Long) As String
Dim suffixes: suffixes = Split(" st nd rd th")
ordinalSuffix = suffixes(Abs(number))
End Function
디버깅하면 즉시 창이 나타납니다.
Is Found: Wahr
Count(s): 2
~~~ Findings of nth substring ~~~
1st substring at Pos.: 25
2nd substring at Pos.: 50
3rd substring at Pos.: 0 ' no finding at all
언급URL : https://stackoverflow.com/questions/15585058/check-if-a-string-contains-another-string
'programing' 카테고리의 다른 글
Unix 쉘 스크립트에서 환경 변수가 설정되어 있는지 확인하는 간결한 방법은 무엇입니까? (0) | 2023.04.22 |
---|---|
두 SELECT 문 결과 결합 (0) | 2023.04.22 |
Azure DevOps에서 슬래시가 있는 지점 이름을 얻는 방법 (0) | 2023.04.22 |
"NODE_ENV"는 내부 또는 외부 명령어, 작동 가능한 명령어 또는 배치 파일로 인식되지 않습니다. (0) | 2023.04.22 |
SQL에서 union과 함께 주문하려면 어떻게 해야 합니까? (0) | 2023.04.22 |