Detectar Letras y Números con Lenguaje M

Por 0 No tags Permalink

Detectar si en cadena texto los tres primeros caracteres son letras y luego los 3 siguientes son números. Resolvemos el caso con Lenguaje M + Power Query

Abrimos un nuevo proyecto e ingresamos a Transformar datos

creamos una nueva consulta

Ingresamos al Editor avanzado

let
    Origen =
    #table (
        type table [ #"PlacasAutos" = text ],
        {
            {"ADG965"},
            {"ASD9Q1"},
            {"AW1312"},
            {"JUR3621"},
            {"PLKJYT"},
            {"HYS145"}
        }
    ),
    #"Personalizada agregada" =
    Table.AddColumn(
        Origen,
        "Personalizado",
        each
        if Text.Length([PlacasAutos]) = 6 then
            let
                Placa = List.Split( Text.ToList([PlacasAutos]), 3),
                Parte1 = Placa{0},
                Parte2 = Placa{1},
                VerificarLetras =
                List.Sum(
                    List.Transform(
                        Parte1,
                        each
                        Number.From(List.ContainsAny({_}, {"a".."z"}, Comparer.OrdinalIgnoreCase ))
                    )
                ),        
                VerificarNumeros =
                List.Sum(
                    List.Transform(
                        Parte2,
                        each
                        Number.From(List.ContainsAny({_}, {"0".."9"} ))
                    )
                )
            in
                if VerificarNumeros = 3 and VerificarLetras = 3
                then "Placa Correcta"
                else "Verificar Placa"
            else "Verificar Placa [Length]"
      )
in
    #"Personalizada agregada"

explicación del código

  1. Creación de una tabla +6 registros con diferentes formatos
  2. Se recorre la tabla creada
  3. Se verifica que la longitud de la placa sea igual a 6 caracteres
  4. Se crea un lista con las placas tomando de 3 en 3 caracteres
  5. Se crean 2 variables de tipo lista con los 2 segmentos
  6. Se recorre la primera lista verificando que los 3 caracteres tenga formato de Letras
  7. Se recorre la primera lista verificando que los 3 caracteres tenga formato de Numérico
  8. Se verifica si la Placa es correcta (3 caracteres + 3 números)
  9. Retorna si la longitud es diferente de 6 y si es así le asigna el valor «Verificar Placa [Length]»

Resultado

Compara el precio para envíos nacionales e internacionales con hasta un 70% de ahorro.

No Comments Yet.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *