Page 1 of 1

Wie optimiere ich meine C# -Methode, um genaue Übereinstimmungsdaten in einer Zeichenfolge zu ersetzen?

Posted: 20 Aug 2025, 01:45
by Anonymous
Die aktuelle Implementierung dauert durchschnittlich 10-15 ms, um jedes Mal aufgerufen zu werden (zeitlich mit der Stoppuhrklasse vor /nach dem Anruf zeitlich abgestimmt. Sie wird durchschnittlich 100 Mal pro Minute aufgerufen. StringBuilder.Replace aber es würde zum Beispiel alle Buchstaben A ersetzen, sodass ich zu einem Regex -Match gewechselt bin, das funktioniert, aber eine Reihe neuer Strings zu generieren, scheint nicht der beste Weg, dies zu tun.

Code: Select all

public static string ExactReplace(this string input, string find, string replace,
bool matchWholeWord)
{
string texttoreplace = matchWholeWord ? string.Format(@"\b{0}\b", find) : find;
return Regex.Replace(input, texttoreplace, replace);
}

public static string Parsedata(string str)
{
str = str.ExactReplace("aa", "0", true);
str = str.ExactReplace("a1", "1", true);
str = str.ExactReplace("ab", "2", true);
str = str.ExactReplace("rr", "3", true);
str = str.ExactReplace("r0", "4", true);
str = str.ExactReplace("s0", "5", true);
str = str.ExactReplace("s1", "6", true);
str = str.ExactReplace("s2", "7", true);
str = str.ExactReplace("st", "8", true);
str = str.ExactReplace("ss", "9", true);
str = str.ExactReplace("lt", "10", true);
str = str.ExactReplace("ll", "11", true);
string resultString = str;
return resultString;
}
< /code>
 Klarstellungen: < /strong> < /p>

[*] [url=viewtopic.php?t=14917]Ich möchte[/url] für die Laufzeit optimieren. "A1, AB, RR, R0, S0, S1, S2, SS, ST, LT, LL, AA" 
. Parsedata wird "1,2,3,4,5,6,7,9,8,10,11,0" .