public static string RemoveChars(string toNormalize, List<char> charsToRemove) { StringBuilder toReturn = new StringBuilder(toNormalize.Length); CharEnumerator enumerator = toNormalize.GetEnumerator(); while(enumerator.MoveNext()) { if (!charsToRemove.Contains(enumerator.Current)) toReturn.Append(enumerator.Current); } return toReturn.ToString(); }
quinta-feira, agosto 02, 2007
Remover carateres duma string em C#
Normalmente o que faço quando quero remover caracteres de uma string é algo do género: string.Replace("[caracter a remover]", string.Empty). Hoje para formatar uma string que me chegava via um serviço precisava de remover vários caracters diferentes, andei à procura e aparentemente a framework não disponibiliza um método tão básico como retorna-me uma string, retirando esta lista de caracteres à string original. O código do método resultante é o seguinte:
poderia deixar como extensão á string:
ResponderEliminar//isso dentro de uma class estática
public static string RemoveChars(this string s, params string[] occurency)
{
string ret = s;
foreach (string occur in occurency)
{
ret = ret.Replace(occur, string.Empty);
}
return ret;
}
assim poderia usar da seguinte maeneira:
string e = "One string that I recgnize".RemoveChars(" ", "o");
Quando escrevi este post ainda não existiam métodos de extensão.
ResponderEliminarÉ mais correcta a utilização de StringBuilder do que a implementação que escolheste, devido ao facto de estares a recreares uma referência nova a cada iteração enquanto que no caso do StringBuilder é sempre a mesma referência.