none
Obtener multiples caracteres de Codigo Ascii RRS feed

  • Pregunta

  • Buen dia a todos, tengo una cadena description, que en algun momento me retornalo siguiente:

    " en lugar de "

    = en lugar de =

    & en lugar de &

    ' en lugar de '

    Mi duda, es sobre si conocen alguna funcion que me pueda convertir todos los codigos ascci que encuentre en un string, para no validar uno por uno, porque en este momento solo son esos, pero despues pueden ser mas caracteres.

    Les agradeceria su respuesta.

    miércoles, 15 de mayo de 2019 15:30

Respuestas

  • Podrías usar una expresión regular para buscar todas las ocurrencias de "&#(\d{2,3});" (es decir, cualquier cosa que empiece por &#, seguido de dos o tres digitos, seguido de punto y coma).

    Despues te quedas con el grupo de los digitos, le haces in int.Parse para pasar a numerico y lo "casteas" a Char. El resultado lo incrustas en el lugar que ocupaba el Match de la expresion regular. El Regex tiene una funcion Replace que hace esto directamente. Es algo complicadillo porque usa un delegado para la sustitucion, pero en el manual viene un ejemplo que se puede copiar y pegar y luego basta con cambiar el Regex y la funcion que convierte el valor.

    Editado: Aquí va un ejemplo:

    namespace EjemploSustitucionCarateres
    {
        using System;
        using System.Text.RegularExpressions;
    
        class Program
        {
            static void Main(string[] args)
            {
                string cadena = "Algo " otra cosa = y más ' fin";
                Regex re = new Regex(@"&#(\d{2,3});");
                string resultado = re.Replace(cadena, evaluador);
                Console.WriteLine(resultado);
            }
    
            private static string evaluador(Match match)
            {
                string contenido = match.Groups[1].Value;
                int numCaracter = int.Parse(contenido);
                char caracter = (char)numCaracter;
                return new string(caracter, 1);
            }
        }
    }

    Nótese que esto solo procesa los caracteres numéricos. Si además necesitas tratar el & eso puedes hacerlo con string.Replace.

    Y vuelto a editar: Me acabo de dar cuenta de que estás preguntando por una aplicación ASP.NET. En ese caso es más sencillo, porque puedes usar Server.HtmlDecode:

    protected void Page_Load(object sender, EventArgs e)
    {
        string cadena = "Algo " otra cosa = y más ' & fin";
        string resultado = Server.HtmlDecode(cadena);
        //...
    }
    
    En este caso vale para todos los caracteres, incluido el &

    miércoles, 15 de mayo de 2019 16:23