"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

C#: Umlaute in Strings ersetzen

grassi3000 09.09.2004 - 19:19 20937 12
Posts

grassi3000

radeon gefrierer
Avatar
Registered: Apr 2003
Location: AT/NÖ/Traisen
Posts: 1161
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?

Oli200

Little Overclocker
Registered: Jan 2003
Location: Austria
Posts: 92
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!

grassi3000

radeon gefrierer
Avatar
Registered: Apr 2003
Location: AT/NÖ/Traisen
Posts: 1161
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?

userohnenamen

leider kein name
Avatar
Registered: Feb 2004
Location: -
Posts: 15858
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

Oli200

Little Overclocker
Registered: Jan 2003
Location: Austria
Posts: 92
hast du die MSDN? da kannst du auch sehr viele funktionen nachschlagen!

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
für alle, die's _noch immer_ nicht wissen:
http://msdn.microsoft.com/

grassi3000

radeon gefrierer
Avatar
Registered: Apr 2003
Location: AT/NÖ/Traisen
Posts: 1161
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.

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12684
Zitat von grassi3000
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.

doch kannst du!

es können da (fast) beliebig viele chars eingefügt werden, egal ob ein char gegen ein anderes oder 5 gegen 1...

grassi3000

radeon gefrierer
Avatar
Registered: Apr 2003
Location: AT/NÖ/Traisen
Posts: 1161
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)

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12684
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.

grassi3000

radeon gefrierer
Avatar
Registered: Apr 2003
Location: AT/NÖ/Traisen
Posts: 1161
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");
Bearbeitet von grassi3000 am 21.09.2004, 19:35

Master99

verträumter realist
Avatar
Registered: Jul 2001
Location: vie/grz
Posts: 12684
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);

dein code:
Code:
func(a,b);

"func" ist irgendeine funktion die halt ein ergebnis zurückgibt.


dein code muss also so lauten:

Code:
FolderName = FolderName.Replace("ä","ae");


btw.: dein code schaut aber nur hier herinnen so "breit" aus oder sonst auch? [ärger unübersichtlich]

grassi3000

radeon gefrierer
Avatar
Registered: Apr 2003
Location: AT/NÖ/Traisen
Posts: 1161
ah... darum ging das nicht :)
thx
(die formatierung hab ich richtig gestellt ... der hat ein paar tabs zu viel aus dem code rauskopiert)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz