Métodos en Java para Manipulación de Cadenas y Validación de Identificadores

Informática3,52 KB

1. Búsqueda de Caracteres en una Cadena

El siguiente método permite buscar todas las apariciones de un carácter específico dentro de una cadena de texto (String) utilizando el método indexOf de forma iterativa:

public static void buscarEnCadena(char caracter, String cadena) {
    int posicion = cadena.indexOf(caracter);

    if (posicion == -1) {
        System.out.println("El carácter " + caracter + " no aparece en la cadena.");
        return;
    }

    System.out.println("El carácter " + caracter + " aparece en las posiciones: ");

    while (posicion != -1) {
        System.out.println(posicion);
        posicion = cadena.indexOf(caracter, posicion + 1);
    }
}

2. Validación Sintáctica y Semántica de NIF

Esta función comprueba el formato de un NIF (8 dígitos numéricos seguidos de una letra mayúscula mediante expresiones regulares) y posteriormente verifica su validez semántica mediante el cálculo de la letra de control correspondiente:

public static boolean validNIF(String nif) {
    if (nif.matches("\\d{8}[A-Z]")) {
        System.out.println("NIF sintácticamente correcto");

        char letra_nif = nif.charAt(8);
        String numero_nif = nif.substring(0, 8);

        System.out.println("Número: " + numero_nif);
        System.out.println("Letra: " + letra_nif);

        if (calcLetraNIF(Integer.valueOf(numero_nif)) == letra_nif) {
            System.out.println("NIF semánticamente correcto");
            return true;
        } else {
            System.out.println("NIF semánticamente incorrecto");
            return false;
        }
    } else {
        System.out.println("NIF sintácticamente incorrecto");
        return false;
    }
}

3. Validación de Número de Seguridad Social (NSS)

El método validar_NSS comprueba en primera instancia la estructura formal del NSS con soporte opcional para guiones, extrae los dígitos clave y realiza la comprobación del dígito de control aplicando el módulo 97:

public static boolean validar_NSS(String nss) {
    if (nss.matches("[A-Z]{2}-?\\d{2}-?\\d{8}-?\\d{2}")) {
        System.out.println("NSS sintácticamente correcto");

        nss = quitarGuiones(nss);
        String x = nss.substring(0, 2);
        int a, b, c;

        a = Integer.valueOf(nss.substring(2, 4));
        b = Integer.valueOf(nss.substring(4, 11));
        c = Integer.valueOf(nss.substring(12, 14));

        long d;

        if (b < 10000000) {
            d = (b + a) * 10000000;
        } else {
            d = Long.valueOf(nss.substring(0, 2) + nss.substring(3, 11));
        }

        long cc = d % 97;

        if (c == cc) {
            System.out.println("Semánticamente correcto");
            return true;
        } else {
            System.out.println("Semánticamente incorrecto");
            return false;
        }
    } else {
        System.out.println("NSS sintácticamente incorrecto");
        return false;
    }
}

4. Inversión de Cadenas de Texto

El método invertirCadena recorre el texto de final a principio concatenando cada carácter para obtener la cadena invertida resultante:

public static String invertirCadena(String cadena) {
    String invertida = "";

    for (int i = cadena.length() - 1; i >= 0; i--) {
        invertida += cadena.charAt(i);
    }

    return invertida;
}

Descargar

PDF Word HTML