Hi,
Der Titel ist vielleicht irreführend. Es geht darum, dass ich Zeichen wie z.b. é,è,ê durch e ersetzen will. Das soll dazu dienen bessere Suchtreffer zu erhalten, weil ich praktisch hinter den Kulissen nur auf einem Begrenzten Zeichensatz arbeiten. Mein bisheriger Code sieht folgendermaßen aus.
Mal davon abgesehen, dass die Liste der Buchstaben nicht unbedingt vollständig ist, Frage ich mich, ob man das ganze auch performanter machen könnte. Oder gibt es eine solche Funktion vielleicht bereits?
Das ganze steht nicht im .Net Forum, weil ich die Ersetzung in allen beteiligten System durchführen muss (Java, JavaScript, PHP und eventuell noch weitere).
Der Titel ist vielleicht irreführend. Es geht darum, dass ich Zeichen wie z.b. é,è,ê durch e ersetzen will. Das soll dazu dienen bessere Suchtreffer zu erhalten, weil ich praktisch hinter den Kulissen nur auf einem Begrenzten Zeichensatz arbeiten. Mein bisheriger Code sieht folgendermaßen aus.
C#:
public static string ReplaceLookALikes(string text)
{
if (String.IsNullOrEmpty(text))
return text;
char[][] cMap = new char[][] {
new char[] {'A', 'À', 'Á', 'Â', 'Ã', 'Ä', 'Å', '?', '?', '?'},
new char[] {'a', 'à', 'á', 'â', 'ã', 'ä', 'å', '?', '?', '?'},
new char[] {'O', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ø'},
new char[] {'o', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø'},
new char[] {'E', 'È', 'É', 'Ê', 'Ë'},
new char[] {'e', 'è', 'é', 'ê', 'ë'},
new char[] {'I', 'Ì', 'Í', 'Î', 'Ï'},
new char[] {'i', 'ì', 'í', 'î', 'ï'},
new char[] {'U', 'Ù', 'Ú', 'Û', 'Ü'},
new char[] {'u', 'ù', 'ú', 'û', 'ü'},
new char[] {'Y', 'Ý', 'Ÿ', '¥'},
new char[] {'C', 'Ç', '?'},
new char[] {'c', 'ç', '?'},
new char[] {'y', 'ý', 'ÿ'},
new char[] {'D', 'Ð'},
new char[] {'d', 'ð'},
new char[] {'N', 'Ñ'},
new char[] {'n', 'ñ'},
new char[] {'S', 'Š'},
new char[] {'s', 'š'},
new char[] {'x', '×'},
new char[] {'Z', 'Ž'},
new char[] {'z', 'ž'}
};
string[][] sMap = new string[][] {
new string[] {"AE", "Æ"},
new string[] {"ae", "æ"},
new string[] {"ss", "ß"},
new string[] {"Th", "þ"},
new string[] {"th", "Þ"},
new string[] {"OE", "Œ"},
new string[] {"oe", "œ"}
};
foreach (char[] cArr in cMap)
for (int i = 1; i < cArr.Length; i++)
text = text.Replace(cArr[i], cArr[0]);
foreach (string[] sArr in sMap)
for (int i = 1; i < sArr.Length; i++)
text = text.Replace(sArr[i], sArr[0]);
return text;
}
Mal davon abgesehen, dass die Liste der Buchstaben nicht unbedingt vollständig ist, Frage ich mich, ob man das ganze auch performanter machen könnte. Oder gibt es eine solche Funktion vielleicht bereits?
Das ganze steht nicht im .Net Forum, weil ich die Ersetzung in allen beteiligten System durchführen muss (Java, JavaScript, PHP und eventuell noch weitere).