Schlussbericht
Ich benutze jetzt tatsächlich
String.Replace() mit einem Replace-Array wie folgt:
Code:
StringBuilder Text_Gesamt = new StringBuilder(500000);
// die genaue Länge kann durch FileInfo vorher bestimmt werden
// Dateien einlesen durch etwas wie Text_Gesamt.AppendText( File.ReadAllText )
string[] arrReplace = new string[] {
// Liste übernommen aus: [
url]http://de.selfhtml.org/
html/referenz/zeichen.htm[/
url]
// Zeichen für Griechisch, Interpunktion, Technik u.ä. habe ich weggelassen
"", " ",
""", "\"",
"Ç", "Ç",
"È", "È",
// usw. etwa 120 Paare: zuerst der OldString, dann der NewString
// (der nicht nur aus einzelnen Zeichen, sondern auch aus Strings bestehen kann)
"
", "
" };
// alle Konvertierungen in einem Rutsch:
for (int x1 = 0; x1 < arrReplace.Length; x1 += 2 )
Text_Gesamt.Replace(arrReplace[x1], arrReplace[x1+1]);
Text_Gesamt entsteht durch Einlesen von etwa 100 Textdateien. Obwohl NET Strings als feste Größe behandelt und bei StringBuilder.Replace() ständig im Arbeitsspeicher umkopieren muss, dauert dieser Vorgang mit
120x Suchen/Ersetzen in 400 kB weniger als 1 Sekunde - für einen Arbeitsablauf, der noch viele weitere Prüfungen benötigt, ist das zu vernachlässigen.
Das zur Kenntnis für andere, die ähnliche Verfahren benötigen. Gruß Jürgen