none
Es posible determinar consecutivo de un código conteniendo letras? RRS feed

  • Pregunta

  • Hola!

    Espero y me puedan entender. Lo explicare en un ejemplo:

    Dado el codigo "15B" asignado a cierto registro, al siguiente registro introducido asignarle el código "15C", y así consecutivamente a los siguientes registros ("15D", "15E", "15F" ) etc.

    Así como a un valor en una variable entera se le aumenta en uno con el prefijo "VariableEntera++" es posible hacerlo de esa misma manera sencilla con letras?

    sábado, 19 de octubre de 2013 20:24

Respuestas

  • hola

    podrias tomar cada parte usando

                string input = "15a";
    
                string obtenerNumero = Regex.Replace(input, @"[^\d]", "");
    
                string obtenerLetra = Regex.Replace(input, @"[^a-zA-Z]", "");

    de esta forma teniendo el numero y la letra podrias incrementar cada uno por separado

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 19 de octubre de 2013 21:50
  • Hola Cesar lo que pasa es que si envías 15a ya no hay un patrón para convertir a int, no se podría convertir como si pasa con una sola letra del alfabeto ya que esta corresponde a una posición numérica, pero si puedes crear una función genérica para tu uso que resiba 15a por ejemplo y te devuelva 15b, algo como esto:

    private string obtenerConsecutivo(string actual)
    {
         string letraActual = actual.Last().ToString();
         string letraSiguiente = ((char)((int)letraActual.ToCharArray()[0] + 1)).ToString();
         return string.Format("{0}{1}", actual.Substring(0, actual.Length - 1), letraSiguiente);
    }

    de esta forma puedes enviar siempre el consecutivo completo y el método te devolverá el siguiente y lo puedes usar donde necesites generar este tipo de consecutivos.

    espero te sirva, saludos!!

     

    El Tavo Mi Blog


    sábado, 19 de octubre de 2013 21:45

Todas las respuestas

  • Hola Cesar, esto lo puedes aumentar un consecutivo alfabetico usando un tipo char donde almacenas tu letra por ejemplo A y a ese char lo conviertes en int y le sumas uno, de esta forma te trae la siguinte letra del alfabeto, observa este ejemplo:

    string siguienteLetra = ((char)((int)'a' + 1)).ToString();

    en este ejemplo siguienteLetra recibe el valor de "b", con esto puedes hacer tu consecutivo, para tu caso podría ser algo como:

    ConsecutivoNumerico ++;
    string siguienteLetra = ((char)((int)'a' + 1)).ToString();
    ConsecutivoFinal = string.Format("{0}{1}", ConsecutivoNumerico, siguienteLetra);

    espero te sirva, saludos!!


    El Tavo Mi Blog

    sábado, 19 de octubre de 2013 20:48
  • Definitivamente este es conocimiento nuevo muchas gracias!

    Pero es posible que reciba no solo 'a', sino "15a" y lo aumente a "15b" o seria forzosamente desglosar el string?

    Saludos!

    sábado, 19 de octubre de 2013 21:26
  • Hola Cesar lo que pasa es que si envías 15a ya no hay un patrón para convertir a int, no se podría convertir como si pasa con una sola letra del alfabeto ya que esta corresponde a una posición numérica, pero si puedes crear una función genérica para tu uso que resiba 15a por ejemplo y te devuelva 15b, algo como esto:

    private string obtenerConsecutivo(string actual)
    {
         string letraActual = actual.Last().ToString();
         string letraSiguiente = ((char)((int)letraActual.ToCharArray()[0] + 1)).ToString();
         return string.Format("{0}{1}", actual.Substring(0, actual.Length - 1), letraSiguiente);
    }

    de esta forma puedes enviar siempre el consecutivo completo y el método te devolverá el siguiente y lo puedes usar donde necesites generar este tipo de consecutivos.

    espero te sirva, saludos!!

     

    El Tavo Mi Blog


    sábado, 19 de octubre de 2013 21:45
  • hola

    podrias tomar cada parte usando

                string input = "15a";
    
                string obtenerNumero = Regex.Replace(input, @"[^\d]", "");
    
                string obtenerLetra = Regex.Replace(input, @"[^a-zA-Z]", "");

    de esta forma teniendo el numero y la letra podrias incrementar cada uno por separado

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    sábado, 19 de octubre de 2013 21:50
  • Si funciona pero despues de la Z manda Corchete
    martes, 16 de octubre de 2018 23:09