lunes, 29 de septiembre de 2008

Eliminar Caracteres repetidos de una cadena de texto

Bien pues primeramente me gustaría comentar que hace algunos días atrás un amigo me comentaba sobre una duda acerca de como poder eliminar caracteres repetidos en una cadena de texto. También me comento que al buscar en algunos foros sugerían que primeramente se ordenara la cadena en orden alfabético. Y después de eso todo quedaba a medias pues usaban funciones meramente privativas que no revelaban el código. Siguiendo ese principio opte por desarrollar el método (en C#) que a continuación les dejo aquí para aquellos que lo necesiten.

VERSIÓN 1: para los que dicen que primero hay que ordenar la cadena en orden ascendente y posteriormente eliminar los caracteres repetidos.



public string removeRepeatedChars(string _str)
{
char[] arrStr = _str.ToCharArray();
Array.Sort(arrStr);
StringBuilder str = new StringBuilder();
int i;
for (i = 0; i < arrStr.Length; i++)
str.Append(arrStr[i].ToString());
i = 0;
while (i < str.Length - 1)
{
if (str[i + 1] == str[i])
str.Remove(i + 1, 1);
else
i++;
}
return str.ToString();
}

VERSIÓN 2: Esta la hice solo para demostrar que puede haber más de un camino para llegar al mismo resultado, espero y también les sea de utilidad.


public string removeRepeatedChars(string _str)
{
string str = _str;
char J, I;
int i, j;
i = j = 0;
J = I = ' ';
while (i < str.Length - 1)
{
j = i + 1;
while (j < str.Length)
{
J = str[j];
I = str[i];
if (J == I)
str = str.Remove(j, 1);
else
j++;
}
i++;
}
return str;
}

Bueno creo que esto es todo por el momento espero les sirva de algo, para dudas, sugerencias o comentarios Escribe tu mensaje aqui. saludos! :)