String auf bestimmte Zeichen überprüfen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Moin,


    Ich möchte bei einem Nummernschildsystem den Spieler selbst aussuchen lassen, was er für ein Schild möchte.
    Das soll so aussehen: SA-56-JZ (Beispiel).
    Im Dialog soll er da dann 56-JZ schreiben.
    Meine Frage ist jetzt, wie kann ich überprüfen ob der String auch wirklich so aufgebaut ist? Nicht dass da manche dann nachher als Nummernschild SA-HALLO haben oder sowas.


    MfG

  • Danke, ihr habt mir sehr weitergeholfen :)
    Das sieht jetzt so aus:

    new stringLength = strlen(inputtext);
    if(stringLength != 5) { return ShowPlayerDialog(playerid,DIALOG_KFZSCHILD,DIALOG_STYLE_INPUT,"KFZ-Anmeldung","Zu wenig/viel Zeichen. \nDas Nummernschild ist z.B. SA-26-JT. SA bleibt, du darfst dir die Zahlen und die 2 Buchstaben aussuchen.\nGib z.B. 54-RT ein.","Weiter",""); }
    if(strfind(inputtext, "-", true) == -1) { return ShowPlayerDialog(playerid,DIALOG_KFZSCHILD,DIALOG_STYLE_INPUT,"KFZ-Anmeldung","Das dritte Zeichen muss ein - sein. \nDas Nummernschild ist z.B. SA-26-JT. SA bleibt, du darfst dir die Zahlen und die 2 Buchstaben aussuchen.\nGib z.B. 54-RT ein.","Weiter",""); }
    new str[3]; strmid(str,inputtext,0,1); new numm = strval(str);
    if(numm > 99 || numm < 10) { return ShowPlayerDialog(playerid,DIALOG_KFZSCHILD,DIALOG_STYLE_INPUT,"KFZ-Anmeldung","Die ersten 2 Zeichen müssen Zahlen sein. \nDas Nummernschild ist z.B. SA-26-JT. SA bleibt, du darfst dir die Zahlen und die 2 Buchstaben aussuchen.\nGib z.B. 54-RT ein.","Weiter",""); }



    Damit sollte alles bis auf die Buchstaben am Ende abgedeckt sein. Wie kann ich kontrollieren ob das Buchstaben sind?

  • Du willst doch wahrscheinlich, dass der erste 'Teil' aus Zahlen, der zweite aus Buchstaben besteht, oder?
    Du fragst einfach ab, ob der zweite Teil, den du durch split in einem string speichern kannst, eine Zahl / Zahlen sind, wenn nicht sind es Buchstaben - Logisch, oder?

    Bin weg, Tschau! (Account kann gelöscht werden)

  • Du willst doch wahrscheinlich, dass der erste 'Teil' aus Zahlen, der zweite aus Buchstaben besteht, oder?
    Du fragst einfach ab, ob der zweite Teil, den du durch split in einem string speichern kannst, eine Zahl / Zahlen sind, wenn nicht sind es Buchstaben - Logisch, oder?

    Joa, habe nur mal wieder nicht weit genug gedacht, danke^^


    @ Aspire, und wie soll ich das dann machen?



    Edit:
    So?

    strmid(str,inputtext,6,7);
    if(IsNumeric(str)) { bla }


  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Oh :D
    Okay, danke, so:


    new stringLength = strlen(inputtext);
    if(stringLength != 5) { return ShowPlayerDialog(playerid,DIALOG_KFZSCHILD,DIALOG_STYLE_INPUT,"KFZ-Anmeldung","Zu wenig/viel Zeichen. \nDas Nummernschild ist z.B. SA-26-JT. SA bleibt, du darfst dir die Zahlen und die 2 Buchstaben aussuchen.\nGib z.B. 54-RT ein.","Weiter",""); }
    if(strfind(inputtext, "-", true,5) == -1) { return ShowPlayerDialog(playerid,DIALOG_KFZSCHILD,DIALOG_STYLE_INPUT,"KFZ-Anmeldung","Das dritte Zeichen muss ein - sein. \nDas Nummernschild ist z.B. SA-26-JT. SA bleibt, du darfst dir die Zahlen und die 2 Buchstaben aussuchen.\nGib z.B. 54-RT ein.","Weiter",""); }
    new str[3]; strmid(str,inputtext,0,1); new numm = strval(str);
    if(numm > 99 || numm < 10) { return ShowPlayerDialog(playerid,DIALOG_KFZSCHILD,DIALOG_STYLE_INPUT,"KFZ-Anmeldung","Die ersten 2 Zeichen müssen Zahlen sein. \nDas Nummernschild ist z.B. SA-26-JT. SA bleibt, du darfst dir die Zahlen und die 2 Buchstaben aussuchen.\nGib z.B. 54-RT ein.","Weiter",""); }
    strmid(str,inputtext,6,7);
    if(IsNumeric(str)) { return ShowPlayerDialog(playerid,DIALOG_KFZSCHILD,DIALOG_STYLE_INPUT,"KFZ-Anmeldung","Die letzten 2 Zeichen müssen Buchstaben sein. \nDas Nummernschild ist z.B. SA-26-JT. SA bleibt, du darfst dir die Zahlen und die 2 Buchstaben aussuchen.\nGib z.B. 54-RT ein.","Weiter",""); }



    Sollte nun ja stimmen, danke für die Hilfe =)

  • strfind(const string[],const sub[],bool:ignorecase=false,pos=0)


    mhm positionsangabe?^^

    Zitat aus wiki: Position (optional) The offset to start searching from.


    Wenn er als postitions angabe 3 macht startet er von dritten zeichen an also können die zeichen danach immernoch "-" sein.


    Kann man das nicht auch so machen?


    new string[5] = "23-AB"
    if(string[3]== "-")