String nach bestimmten Zeichen durchsuchen

Psychomentis

Mitglied
Habe eine kleine Funktion geschrieben
Bei Google habe ich nichts gescheites gefunden.

Code:
Public Function Privilege(ByVal perm As String, ByVal permneed As String) As Boolean
        For i As Integer = 1 To Len(perm)
            If InStr(permneed, Mid(perm, i, 1)) Then
                Return True
            Else
                Return False
            End If
        Next i
    End Function
Nur gibt er mir auch True aus wenn in dem String nur eins der Zeichen die ich als Suchkreterium angebe enthalten ist.

Bsp. :
Code:
Privilege("abcdefghijklmnopqrstuvwyz","aC") // True obwohl im String kein C enthalten ist.
Privilege("abcdefghijklmnopqrstuvwyz","a")  // True

Wie muss ich die Funktion umschreiben damit das funktioniert?
 
Du programmierst ja mit .Net, da du hier gepostet hast. (Code sieht eher nach VB Classic aus! (Bis auf das Return))

Verwende doch einfach die eingebauten Möglichkeiten im .Net Framework.

Die Contains-Methode des String-Datentyps ist glaube ich genau das, was du suchst. ;)

Code:
Public Function Privilege(ByVal perm As String, ByVal permneed As String) As Boolean
     If perm.Contains(permneed) Then Return True Else Return False
End Function


Falls du mit .Net kleiner als 2.0 programmierst, musst du es umgehen, da es die Contains-Methode erst ab Version 2.0 gibt.

Code:
If Not perm.IndexOf(permneed) = -1 Then Return True Else Return False


Ansonsten, falls du die VB Classic Funktionen verwenden sollst/willst (was ich allerdings nicht empfehle :D), müsste dein Code so aussehen:

Code:
Public Function Privilege(ByVal perm As String, ByVal permneed As String) As Boolean
    For i As Integer = 1 To Len(perm)
        If InStr(permneed, Mid(perm, i, Len(permneed))) Then Return True
    Next i
    Return False
End Function
 
Zuletzt bearbeitet:
Das hatte ich mir auch schon angesehen.
Die funktion gibt aber auch False aus wenn
perm = "abcdefghijklmnopqrstuvwxyzC" ist.
Ist aber leider nicht genau das was ich suche.

Wahrscheinlich habe ich mich ungenau ausgedrückt.
Die Funktion soll nach dem "a" und dem "C" suchen egal ob sie nacheinander im String kommen oder auseinander sind. "abcdefgC" oder "aCdefg".
Ich hoffe es ist jetzt besser verständlich was ich möchte!

Stimmt ist VB Classic man muss sich ja erstmal daran gewöhnen.
Bin von PHP auf VB umgestiegen und denn auf VB.Net ^^
 
Zuletzt bearbeitet:
Achso, dann hatte ich dich falsch verstanden.

Du musst einfach alle Zeichen im String "permneed" durchlaufen und auf Contains prüfen.

Etwa so:

Code:
For Each C As Char In permneed
     If Not perm.Contains(C) Then Return False
Next
'Wenn die Ausführung der Funktion bis hier hin gekommen ist,
'dann sind alle Zeichen des Strings "permneed" in dem String "perm" enthalten.

Return True
 
Zurück