tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Masterclavat
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1660
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Psychomentis Psychomentis ist offline Mitglied
    Registriert seit
    Oct 2007
    Ort
    C:\Windows
    Beiträge
    14
    Habe eine kleine Funktion geschrieben
    Bei Google habe ich nichts gescheites gefunden.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    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 :
    1
    2
    
    Privilege("abcdefghijklmnopqrstuvwyz","aC") // True obwohl im String kein C enthalten ist.
    Privilege("abcdefghijklmnopqrstuvwyz","a")  // True

    Wie muss ich die Funktion umschreiben damit das funktioniert?
     

  2. #2
    Masterclavat Masterclavat ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Beiträge
    325
    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 vbnet:
    1
    2
    3
    
    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 vbnet:
    1
    
    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 ), müsste dein Code so aussehen:

    Code vbnet:
    1
    2
    3
    4
    5
    6
    
    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
    Geändert von Masterclavat (02.04.09 um 19:22 Uhr)
     

  3. #3
    Psychomentis Psychomentis ist offline Mitglied
    Registriert seit
    Oct 2007
    Ort
    C:\Windows
    Beiträge
    14
    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
    Geändert von Psychomentis (02.04.09 um 19:36 Uhr)
     

  4. #4
    Masterclavat Masterclavat ist offline Mitglied Brokat
    Registriert seit
    Oct 2007
    Beiträge
    325
    Achso, dann hatte ich dich falsch verstanden.

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

    Etwa so:

    Code vbnet:
    1
    2
    3
    4
    5
    6
    7
    
    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
    Psychomentis bedankt sich. 

  5. #5
    Psychomentis Psychomentis ist offline Mitglied
    Registriert seit
    Oct 2007
    Ort
    C:\Windows
    Beiträge
    14
    Ja genau so sollte es laufen vielen Dank für deine schnelle und gute Hilfe.
    MFG
    Psy
     

Ähnliche Themen

  1. String durchsuchen und Zeichen entfernen
    Von FingerSkill im Forum PHP
    Antworten: 4
    Letzter Beitrag: 21.03.07, 11:18
  2. String nach bestimmten Wort durchsuchen
    Von piti66 im Forum PHP
    Antworten: 9
    Letzter Beitrag: 24.03.06, 10:48
  3. String nach bestimmten Wort durchsuchen
    Von gwaan im Forum Java
    Antworten: 4
    Letzter Beitrag: 07.11.05, 11:16
  4. Datei durchsuchen nach einem bestimmten String
    Von Friesi im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 2
    Letzter Beitrag: 11.09.04, 12:08
  5. String zwischen bestimmten Zeichen verändern
    Von Mr. FISHMAN im Forum PHP
    Antworten: 6
    Letzter Beitrag: 10.06.03, 16:44