bräuchte mal hilfe bei einer java function zu vb umwandeln

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von aSc0I3y.

    bräuchte mal hilfe bei einer java function zu vb umwandeln

    moin,
    ich bräuchte mal eure hilfe beim umwandeln einer java function die ich gefunden haben. sie dient dazu wie stark ein passwort sein sollte.

    hier mal die java function

    VB.NET-Quellcode

    1. function ixScorePassword(szPasswort) {
    2. // Passwort in Gruppen ordnen
    3. // Zusammenhängende Zeichengruppen werden seperiert
    4. var szArea = szPasswort;
    5. szArea=szArea.replace(/[^a-z0-9]/ig,'\1'); // sonderzeichenblöcke \1 ist chr(1) / 0x01 - wird als trenner verwendet
    6. szArea=szArea.replace(/[a-z]+/g,'\2'); // buchstabenblöcke klein
    7. szArea=szArea.replace(/[A-Z]+/g,'\3'); // buchstabenblöcke gross
    8. szArea=szArea.replace(/[0-9]/g,'\4'); // zahlenblöcke
    9. // Scoring - max. 2Pkt je Kriterium (insgesamt 10)
    10. // Passwortlänge wird berechnet indem erst alle zeichenwiederholungen rausgenommen werden (abba = aba) und anschliessend die länge-6 die score ergibt (passwort mit 8 zeichen kann demnach schon 2 punkte bringen)
    11. var iScore = Math.min(4, szPasswort.replace(/(\w)\1{1,}/ig,'$1').length-1); // max. 2 Punkte für Länge wo auch sich wiederholende zeichen rausgeschnitten wurden
    12. iScore += Math.min(2,szArea.replace(/[^\1]/g,'').length); // Sonderzeichenblöcke addieren
    13. iScore += Math.min(2,szArea.replace(/[^\2]/g,'').length); // buchstabenblöcke addieren
    14. iScore += Math.min(2,szArea.replace(/[^\3]/g,'').length); // buchstabenblöcke addieren
    15. iScore += Math.min(2,szArea.replace(/[^\4]/g,'').length); // zahlenblöcke addieren
    16. iScore = Math.max(0, Math.min(10, iScore)); // Sicherstellen das Wertebereich 0-10 bleibt
    17. return iScore;
    18. };


    hier mal das was ich bis jetzt draus gemacht habe

    VB.NET-Quellcode

    1. Function ixScorePassword(ByVal szPasswort)
    2. Dim szArea = szPasswort
    3. szArea = Regex.Replace(szArea, "[^a-zA-Z0-9]", "\1", RegexOptions.IgnoreCase)
    4. szArea = Regex.Replace(szArea, "[a-z]", "\2", RegexOptions.IgnoreCase)
    5. szArea = Regex.Replace(szArea, "[A-Z]", "\3", RegexOptions.IgnoreCase)
    6. szArea = Regex.Replace(szArea, "[0-9]", "\4", RegexOptions.IgnoreCase)
    7. Dim iScore = Math.Min(4, szPasswort.replace("(\w)\1{1,}", "$1").length - 1)
    8. iScore += Math.Min(2, szArea.Replace("[^\1]", "").Length)
    9. iScore += Math.Min(2, szArea.Replace("[^\2]", "").Length)
    10. iScore += Math.Min(2, szArea.Replace("[^\3]", "").Length)
    11. iScore += Math.Min(2, szArea.Replace("[^\4]", "").Length)
    12. iScore = Math.Max(0, Math.Min(10, iScore))
    13. End Function


    das prinzip der funktion verstehe ich ja, nur ich komm noch nicht so recht klar mit RegEX, hab heut schon viel drüber gelesen und auch das tutorial hier im forum.
    komm aber momentarn einfach nicht weiter.
    deswegen bitte ich euch mal um hilfe :)
    Moin! Ich kenne mich auch nicht so gut mit VB aus, versuche dir jetzt aber mal zu helfen :D
    Zuerst einmal: Das ist JavaScript.

    Function ixScorePassword(ByVal szPasswort)Dim szArea = szPasswort As String

    Da muss AFAIK noch hin, welcher Typ der Paramter ist (String)

    Gleiches bei der Variablen Deklaration:
    Dim szArea = szPasswort As String


    Dim iScore As Integer = Math.Min([...])


    Hoffe ich konnte Ansatzweise helfen, Jopi

    PS: Von dem RegEx hab ich die Finger gelassen, schaue es mir vllt. gleich nochmal an :D
    kann mir keiner der RegEx-Perten weiter helfen, komm wirklich nicht mehr weiter ?(

    wenn der string = "a3.4A" 'wäre das passwort
    bekomm ich immer den string = "\\4\4\\4\4\\4" raus

    falls ich das javascript richtig verstehe sollte aber der string so "\2\4\1\4\3" aussehen also "a3.4A" = a="\2" , 3="\4" , .="\1" , 4="\4" , A="\3" durch das replace oder

    komisch finde ich auch der er keinen unterschied bei mir macht was klein und Großbuchstaben sind, beide sind immer "\2"

    wie gesagt bin glutiger anfänger in RegEx,bin aber am lernen und verstehen :thumbsup:
    und für jeden tip und hilfe stellung dankbar
    hoho, ich hab den Fehler geschnallt:
    In den ersten 3 Ersetzungen ersetzst du allerlei Zeichen durch zahlen.
    In der letzten Ersetzung ersetzst du dann alle Zahlen durch \4

    Aber ich kenne java zuwenig. Eventuell bedeutet '\2' in java etwas anneres als in Vb. Kann sein, dasses in java ein nicht als Text darstellbares Zeichen bedeutet, während Vb dir halt genau den String "\2" hinschreibt.

    Von c# her kenne ich jdfs, dass '\' eine sog. Escape-Sequenz ist, zu spezifizierung von Zeichen, die anners im CodeEditor garnicht eingegeben wern können.
    In Vb muss man stattdessen die ChrW - Methode nehmen, also ChrW(2) schreiben, ohne """".
    Vielleicht hilft auch Frau Google, wenn Du sie nach Java Replace oder so fragst.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    aber ich bin ziemlich sicher, dasses sich bei '\2' um eine Escape-Sequenz handelt, und dann ergibt der Code ja auch sinn, auch dass die letzte Ersetzung alle Zahlen ersetzt.
    Weil ChrW(2) ist ja keine Zahl im Sinne von Regex, und würde also nicht zur unerwünschten Ersetzung nach \4 führen.
    meld mich mal zurück

    nach langen umher würschteln, hab ich es hinbekommen. man muss nur dran bleiben ^^

    VB.NET-Quellcode

    1. Function ixScorePassword(ByVal szPasswort)
    2. Dim szArea As String = szPasswort
    3. szArea = Regex.Replace(szArea, "[^a-zA-Z0-9]", "╚", RegexOptions.IgnoreCase)
    4. szArea = Regex.Replace(szArea, "[a-z]+", "╔")
    5. szArea = Regex.Replace(szArea, "[A-Z]+", "╝")
    6. szArea = Regex.Replace(szArea, "[0-9\.]", "╗")
    7. Dim iScore As Integer = Math.Min(4, szPasswort.replace("(\w)\1{1,}", "$1").length - 1)
    8. iScore += Math.Min(2, Regex.Replace(szArea, "[^╚]+", "").Length)
    9. iScore += Math.Min(2, Regex.Replace(szArea, "[^╔]+", "").Length)
    10. iScore += Math.Min(2, Regex.Replace(szArea, "[^╝]+", "").Length)
    11. iScore += Math.Min(2, Regex.Replace(szArea, "[^╗]+", "").Length)
    12. iScore = Math.Max(0, Math.Min(10, iScore))
    13. End Function


    und ein danke schön an dich ErfinderDesRades, dein tip mit \1 = chr(1) war genau richtig und brachte mich auf die richtige fährte :)

    auf dem fehler, das er immer \4 gemacht hat bin ich später auch drauf gekommen, war ja auch logisch ^^ naja egal.

    wie man sieht hab ich das chr(x) durch ein anderes ascii ersetzt, was nicht so geläufig ist. und somit funktionier meine passwort score function :thumbsup: :thumbsup:

    thx und gruß