URL: https://www.overclockers.at/coding-stuff/c_umlaute_in_strings_ersetzen_124162/page_1 - zur Vollversion wechseln!
Tja, ich muss momentan grad ein Paar Strings auf Umlaute überprüfen, und dann den jeweiligen Umlaut durch die <x>e variante ersetzen.
Mit regex hab ich das nicht zusammengebracht, v.a. das ersetzen. Das suchen wäre ja so einfacher.
v.a. es können mehrere verschiedene Umlaute pro string vorkommen.
kennt da wer eine Lösung?
ich würd es so machen:
public static string convert_uml(string old)
{
old = old.Replace("ä","ae");
old = old.Replace("ö","oe");
old = old.Replace("ü","ue");
return(old);
}
die methode kannst du dann immer und für jeden string ausführen einfach
neu = convert_uml(alt);
dann sollte das funktionieren!
Aha, kannte die funktion nicht. ich dachte das müsste viel komplzierter sein. geht die lösung auch bei Ö;Ü,Ä, oder muss ich da die zeilen hinzufügen?
für großbuchstaben machst dann halt so
old = old.Replace("Ä","Ae");
old = old.Replace("Ö","Oe");
old = old.Replace("Ü","Ue");
oder gleich:
old = old.Replace("Ä","Ae").Replace("Ö","Oe").Replace("Ü","Ue"); 
kleiner tipp: benutz das Intellisense menü (das das automatisch aufklappt bei einem punkt) und lies dir die sachen durch, mit den beschreibungen
dadurch erfährt man meist schon sehr viel
hast du die MSDN? da kannst du auch sehr viele funktionen nachschlagen!
für alle, die's _noch immer_ nicht wissen:
http://msdn.microsoft.com/
So, ich hab den Code jetzt ausprobiert.
Jedoch werden bei mir die Umlaute nicht ersetzt.
Die Werte die ich in dem String habe, wo die Umlaute ersetzt werden, kommen aus einem Input Stream, mit der Default Codierung (ASCII,UTF8,... haben die Umlaute nicht mal richtig importiert)
Und ich habe bereits auf MSDN gesucht, aber nix zu dem Thema gefunden.
die Überladung der Replace methode mit chars kann ich ja auch nicht nehmen, da ich einen char durch 2 ersetze, oder liege ich da falsch.
Zitat von grassi3000die Überladung der Replace methode mit chars kann ich ja auch nicht nehmen, da ich einen char durch 2 ersetze, oder liege ich da falsch.
wie gebe ich dann mehrere chars an?
Replace('ä','ae')
oder
Replace('ä','a''e')
?
(komm in den nächsten stunden nicht zum testrechner, darum die blöde frage)
mhm, hab dich da oben wohl falsch verstanden...
oli und userohnenamen's lösungen gehen 100%ig (selbst schon oft so gemacht)... kopier mal deinen genauen code.
Also das ist der Code den ich verwende:
Code:FolderName.Replace("ä","ae"); FolderName.Replace("ö","oe"); FolderName.Replace("ü","ue"); FolderName.Replace("Ä","Ae"); FolderName.Replace("Ö","Oe"); FolderName.Replace("Ü","Ue");
naja is ganz klar... hat schon nen sinn wie meine vorredner ihren code gestaltet haben...
der string mit den ersetzen zeichen ist das ERGEBNIS dieser replace funktion.
so wie du das ganze geschrieben hast speicherts du das ergebnis gar nirgengs.
ums anders darzustellen:
so gehört:
Code:ergebnis = func(a,b);
Code:func(a,b);
Code:FolderName = FolderName.Replace("ä","ae");
ah... darum ging das nicht 
thx
(die formatierung hab ich richtig gestellt ... der hat ein paar tabs zu viel aus dem code rauskopiert)
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2026