programing

VB.NET - 문자열에 "value1" 또는 "value2"가 포함된 경우

padding 2023. 5. 23. 21:36
반응형

VB.NET - 문자열에 "value1" 또는 "value2"가 포함된 경우

문자열에 "value1" 또는 "value2"가 포함되어 있는지 어떻게 확인할 수 있는지 궁금합니다.시도해 봤습니다.

If strMyString.Contains("Something") Then

End if

이것은 작동하지만, 이것은 작동하지 않습니다.

If strMyString.Contains("Something") or ("Something2") Then

End if

이로 인해 문자열에서 Long으로 변환할 수 없다는 오류가 발생합니다.만약에 제가.or ("Something2")첫 번째 괄호 안에 문자열을 부울로 변환할 수 없다는 오류가 있습니다.

그렇다면 너무 많은 코드를 쓸 필요 없이 문자열에 "string1" 또는 "string2"가 포함되어 있는지 어떻게 확인할 수 있습니까?

다음과 같이 해야 합니다.

If strMyString.Contains("Something") OrElse strMyString.Contains("Something2") Then
    '[Put Code Here]
End if

이것이 필요합니다.

If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
    'Code
End if

이미 제공된 답변 외에도 다음을 사용하면 더 빨라집니다.OrElse대신에Or두 번째 테스트가 단락되었기 때문입니다.이는 한 문자열이 다른 문자열보다 먼저 위치할 가능성이 높다는 것을 알고 있는 경우 특히 그렇습니다.

If strMyString.Contains("Most Likely To Find") OrElse strMyString.Contains("Less Likely to Find") Then
    'Code
End if

다음은 특정 문자열에 미리 정의된 문자열이 포함되어 있는지 확인하는 대체 솔루션입니다.그것은 사용합니다.IndexOf기능:

'this is your string
Dim strMyString As String = "aaSomethingbb"

'if your string contains these strings
Dim TargetString1 As String = "Something"
Dim TargetString2 As String = "Something2"

If strMyString.IndexOf(TargetString1) <> -1 Or strMyString.IndexOf(TargetString2) <> -1 Then

End If

참고: 이 솔루션은 Visual Studio 2010에서 테스트되었습니다.

당신은 가지고 있다("Something2")자체 - 부울이 반환되도록 테스트해야 합니다.

If strMyString.Contains("Something") or strMyString.Contains("Something2") Then
If strMyString.Contains("Something") or strMyString.Contains("Something2") Then

End if

이 오류는 컴파일러가 사용자가 비트 단위로 수행하기를 원한다고 생각함을 나타냅니다.OR부울 및 문자열에 표시됩니다.물론 효과가 없을 것입니다.

텍스트가 대문자인지 소문자인지 여부를 무시하려면 다음을 사용합니다.

   If strMyString.ToUpper.Contains("TEXT1") OrElse strMyString.ToUpper.Contains("TEXT2") Then
        'Something
   End if
 If strMyString.Tostring.Contains("Something") or strMyString.Tostring.Contains("Something2") Then


     End if

저는 다른 방식으로 접근해 왔습니다.나는 true 또는 false를 단순히 반환하는 함수를 만들었습니다.용도:

필드에 ("A;B;C"), MyFieldVariable,참|거짓) 그러면

..어떻게 좀 해봐.

종료할 경우

Public Function FieldContains(Searchfor As String, SearchField As String, AllowNulls As Boolean) As Boolean

       If AllowNulls And Len(SearchField) = 0 Then Return True

        For Each strSearchFor As String In Searchfor.Split(";")
            If UCase(SearchField) = UCase(strSearchFor) Then
                Return True
            End If
        Next

        Return False

    End Function

흥미롭게도 이 솔루션은 고장날 수 있지만 해결 방법은 다음과 같습니다.호출된 내 데이터베이스를 찾는 중KeyWorks.accdb존재해야 하는 항목:

실행:

Dim strDataPath As String = GetSetting("KeyWorks", "dataPath", "01", "") 'get from registry

If Not strDataPath.Contains("KeyWorks.accdb") Then....etc.

데이터베이스 이름이 지정된 경우KeyWorksBB.accdb,그If진술서는 이것이 수용 가능함을 발견하고 종료할 것입니다.If그것이 실제로 발견했기 때문에 진술.KeyWorks그리고.accdb.

만약 내가 포위한다면,If같은 작은 따옴표를 사용한 문장 한정자'KeyWorks.accdb'이제 모든 연속된 문자를 순서대로 찾고 입력합니다.If일치하지 않으므로 차단합니다.

언급URL : https://stackoverflow.com/questions/6370081/vb-net-if-string-contains-value1-or-value2

반응형