Bestimmte Buchstaben im String umwandeln

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
  • Ich weiß es gab schonmal so einen thread, find ihn aber nicht wieder, undzwar
    Ich will aus einem string z.b. den buchstaben ä auslesen und in ae umwandeln, ich hab schon das gefunden:
    stock str_replace(search[], replace[], source[]) //By Tratulla
    {
    new newnick[256];
    new newlen;
    for (new i; i < strlen(source); i++)
    {
    if (strlen(search) > 1 && i != (strlen(source) - 1))
    {
    new matched = 1;
    new start = i;
    for (new s=0; s < strlen(search) && matched == 1; s++)
    {
    if (source[i] != search[s] && s == 0)
    {
    newnick[newlen] = source[i];
    matched = 0;
    } else
    {
    if (source[i] == search[s])
    {
    i++;
    } else
    {
    matched = 0;
    }
    }
    }
    if (matched == 0)
    {
    for (start=start; start <= i; start++)
    {
    newnick[newlen] = source[start];
    newlen++;
    }
    } else
    {
    for (new r; r < strlen(replace); r++)
    {
    newnick[newlen] = replace[r];
    newlen++;
    }
    i = (start + (strlen(search) - 1));
    }
    } else
    {
    if (strlen(search) == 1 && source[i] == search[0])
    {
    for (new r; r < strlen(replace); r++)
    {
    newnick[newlen] = replace[r];
    newlen++;
    }
    } else
    {
    newnick[newlen] = source[i];
    newlen++;
    }
    }
    }
    newnick[newlen] = EOS;
    return newnick;
    }


    Jedoch weiß ich jetzt nich wie ich das verwende, es soll im chat ohne was davor umwandeln, hab schon probiert bei
    public OnPlayerText(playerid, text[])
    einzusetzten:
    str_replace("ä", "ae", text)
    funktioniert jedoch nicht, kann jemand helfen?
    Wäre nett ;D



    [/pwn]

    Mfg kony




  • Man sollte sich die Funktion auch mal genauer angucken.
    return newnick;

    Dir sollte also klar sein,dass die Funktion den neuen String zurück gibt.Daher musst du es eigentlich so benutzten müsstest.
    public OnPlayerText(playerid, text[]){
    text=str_replace("ä", "ae", text);
    ...
    }


    Würde dir aber trotzdem du dieser str_replace Variante raten
    stock str_replace(sSearch[], sReplace[], const sSubject[], &iCount = 0)
    {
    new
    iLengthTarget = strlen(sSearch),
    iLengthReplace = strlen(sReplace),
    iLengthSource = strlen(sSubject),
    iItterations = (iLengthSource - iLengthTarget) + 1;


    new
    sTemp[128],
    sReturn[128];


    strcat(sReturn, sSubject, 128);
    iCount = 0;


    for(new iIndex; iIndex < iItterations; ++iIndex)
    {
    strmid(sTemp, sReturn, iIndex, (iIndex + iLengthTarget), (iLengthTarget + 1));


    if(!strcmp(sTemp, sSearch, false))
    {
    strdel(sReturn, iIndex, (iIndex + iLengthTarget));
    strins(sReturn, sReplace, iIndex, iLengthReplace);


    iIndex += iLengthTarget;
    iCount++;
    }
    }


    return sReturn;
    }
    Würdest du ebenfalls benutzten wie oben im Beispiel:
    public OnPlayerText(playerid, text[]){
    text=str_replace("ä", "ae", text);
    ...
    }