Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#4

Re: StringReplace automatisch - was geht schnell und einfach

  Alt 7. Okt 2006, 11:25
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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat