Ich hatte das gleiche Problem und war besorgt über die Auswirkungen des Aufrufs der IsPunctuation für jede einzelne Prüfung auf die Leistung.
Ich habe diesen Beitrag gefunden: http://www.dotnetperls.com/char-ispunctuation .
Über die Zeilen hinweg: char.IsPunctuation verarbeitet auch Unicode über ASCII. Die Methode entspricht einer Reihe von Zeichen, einschließlich Steuerzeichen. Diese Methode ist definitiv schwer und teuer.
Das Fazit ist, dass ich mich wegen der Auswirkungen auf die Leistung meines ETL-Prozesses letztendlich nicht dafür entschieden habe.
Ich habe mich für die benutzerdefinierte Implementierung von Dotnetperls entschieden.
Und zu Ihrer Information, hier ist ein Code, der aus den vorherigen Antworten abgeleitet wurde, um die Liste aller Satzzeichen (mit Ausnahme der Kontrollzeichen) zu erhalten:
var punctuationCharacters = new List<char>();
for (int i = char.MinValue; i <= char.MaxValue; i++)
{
var character = Convert.ToChar(i);
if (char.IsPunctuation(character) && !char.IsControl(character))
{
punctuationCharacters.Add(character);
}
}
var commaSeparatedValueOfPunctuationCharacters = string.Join("", punctuationCharacters);
Console.WriteLine(commaSeparatedValueOfPunctuationCharacters);
Prost, Andrew