Me enfrenté al mismo problema y me preocupaba el impacto en el rendimiento de llamar a IsPunctuation para cada comprobación.
He encontrado este post: http://www.dotnetperls.com/char-ispunctuation.
Al otro lado de las líneas: char.IsPunctuation también maneja Unicode encima de ASCII. El método coincide con un grupo de caracteres, incluidos los de control. Por definición, este método es pesado y costoso.
La conclusión es que finalmente no fui por su impacto en el rendimiento en mi proceso de ETL.
Fui para la implementación personalizada de dotnetperls.
Y sobresalen FYI, aquí hay un código deduce de las respuestas anteriores para obtener la lista de todos los caracteres de puntuación (excluidos los de control):
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);
Cheers, Andrew
Diferentes idiomas son, de hecho, diferentes, y no creo que haya una respuesta a la pregunta que está haciendo. Puede preguntar sobre idiomas específicos, o qué idioma sería el mejor para ese tipo de manipulación. –