Umlaute und Co. ersetzen?
-
Hallo
in PHP gibt's ja so lustige Funktionen wie htmlentities und Co. Nun ja ich müsste aus einem String sämtliche Umlaute und das "ß" ersetzen.
Nochmal als Beispiel:
Straße - Strasse
Vörden - VoerdenIch habe schon eine Schleife die mühsam . / - ( und ) entfernt und es wäre auch kein Ding die so weit umzustricken, aber vielleicht gibts da ja was vorgefertigtes.
-
Hi,
schau mal in der Hilfe nach StringReplace (oder so.. Hab gerade keinen BCB zur Hand da Linux ;)) Damit kann man alle Vorkommen eines Strings in einem String durch etwas anderes ersetzen.MfG
Alexander Sulfrian
-
text=StringReplace(text,"ß","ss",TReplaceFlags() << rfReplaceAll);
-
Hallo!
erstmal danke an euch beide
mit StringReplace (im folgenden SR gen.)habe ich es auch mal versucht bzw. ich wollte meine Schleife in der SR nach den Zeichen aus meinem char[] sucht und auch das neue Zeichen aus einem char[] holt.
Das problem ist, dass ein derartiges Array ja immer nur ein zeichen (charakter) zur Verfügung stellt. ich könnte also mit meiner Funk. nur nach "ä" suchen aber nicht "ae" einfügen (geht schon, aber ihr wisst was ich meine).
Hinzu kommt, dass ich PHP-Verwöhnt bin und "String-Arrays" unter BCB nicht wirklich durchblicke

Kann mir einer von euch eventuell die deklaration bzw. initialisierung erklären?
-
zeig doch mal lieber was du bisher versucht hast und sag uns nicht einfach das es nicht geht...
-
Sunday schrieb:
zeig doch mal lieber was du bisher versucht hast und sag uns nicht einfach das es nicht geht...
ich dreh am Rad... jetzt hab ich 2 mal ne Antwort geschrieben und beim 1. Mal nen Timeout bzw. "Seite kann nicht angezeigt werden" und beim 2. Mal - Gott weiß wie - beim drücken auf space irgendeine andere ssschhöne Taste erwischt und alles war weg ^^
also Versuch Nummer 3 (und jetzt mach ich schonmal "copy" ^^):
char strToRepl[] = ".-/()"; for(i = 0; i < 5; i++) { dinohsname = StringReplace(dinohsname,strToRepl[i]," ", TReplaceFlags() << rfReplaceAll); dinohsname = StringReplace(dinohsort,strToRepl[i]," ", TReplaceFlags() << rfReplaceAll); } (und nochmal copy...)So... mit dieser Methode komme ich nicht weit. Also muss ja ein zweites character array her und das erste muss um ß, ä,ö,ü erweitert werden.
Nun das dumme ist, dass ein character array ja je index nur einen char. anbietet. ich müsste also einen weiteren zähler einbauen und 2 idizes des char[] anstelle einsetzen ("char1[zähler]char2[zähler+1]" am schleifenende zähler+2)
Das meinte ich mit "geht nicht (geht schon, aber ihr wisst was ich meine)"eine feinere lösung wäre ein array aus Strings
-
Na dann nimm das String-Arrays!
// zu ersetzender Text AnsiString Text = "Blah.TextßzuÄrag("; // Ersetzungsliste AnsiString RepStr[5] = { "ß", "Ä", "(", ".", "Text" }; // alle AnsiString im Array suchen und ersetzen for (int i = 0; i < 5; ++i) Text = StringReplace(Text, RepStr[i], " ", TReplaceFlags() << rfReplaceAll);liefert: "Blah zu rag "
-
aaaaaah

ich wusste gar nicht dass das so simpel mit AnsiString geht - hab da nur mal was mit struct gelesen...
dankeschön!
-
Doof ist doch aber daran, daß Du <ß> nicht durch <ss> ... sondern alle zu ersetzende Werte durch ein und das selbe Zeichen (in dem Fall Leerzeichen) ersetzt. Willst Du das?