Logotipo de Zephyrnet

Eliminar puntuación de una cadena en Java

Fecha:

Durante el procesamiento de texto, ya sea que esté buscando ciertas palabras y creando reglas de coincidencia de patrones, contando la frecuencia de los elementos, etc., la puntuación puede arruinar sus planes.

A menudo, querrá eliminar palabras vacías, signos de puntuación, dígitos u otros algo categoría de personajes, dependiendo de cuál sea tu objetivo final.

En este breve tutorial, veremos cómo eliminar la puntuación de una cadena en Java.

Eliminar puntuación de cadena con RegEx (expresiones regulares)

Las expresiones regulares encajan muy naturalmente aquí, tanto porque es probable que sean parte de otras partes de procesamiento como porque son eficientes en la comparación de patrones. En Java, la expresión regular para la coincidencia de puntuación es p{Punct} o una abreviatura p{P}.

Tendrá que escapar de la primera barra invertida en una cadena, por lo que eliminar todos los signos de puntuación es equivalente a hacerlos coincidir y reemplazarlos con un carácter vacío:

String.replaceAll("p{P}", "")

Apliquémoslo a una oración simple:

String text = "Hi! This is, in effect, a synthetic sentence. It's meant to have several punctuation characters!";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

Esto resulta en:

Hi This is in effect a synthetic sentence Its meant to have several punctuation characters

Echemos un vistazo a qué caracteres se tratan como puntuación aquí:

String text = "!#$%&'()*+,-./:;[email protected][]^_`{|}~";
String clean = text.replaceAll("p{P}", "");
System.out.println(clean);

Con estos caracteres especiales, ¿cuáles quedan después de eliminar la puntuación?

$+^`|~

Eliminar puntuación de cadena sin RegEx

Si no quiere emplear expresiones regulares, puede hacer una verificación manual mientras itera a través de cada carácter de una cadena. Recuerda usar un StringBuffer en lugar de un String mientras hace esto, dado que las cadenas son inmutables y se deben hacer copias cada vez que desee agregar un carácter, por lo que estaría creando string.length número de cadenas en la memoria.

StringBuffer es mutable y se puede convertir fácilmente en una cadena inmutable al final del proceso:

Consulte nuestra guía práctica y práctica para aprender Git, con las mejores prácticas, los estándares aceptados por la industria y la hoja de trucos incluida. Deja de buscar en Google los comandos de Git y, de hecho, aprenden ella!

public static String removePunctuations(String s) {
    StringBuffer buffer = new StringBuffer();
    for (Character c : s.toCharArray()) {
        if(Character.isLetterOrDigit(c))
            buffer.append(c);
    }
    return buffer.toString();
}

Vamos a crear una cadena y limpiarla:

String text = "Hello! nHere are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ nWhere are they? :(n";
System.out.println(text);
String clean = removePunctuations(text);
System.out.println(clean);
Hello! 
Here are some special characters: !#$%&'()*+,-./:;[email protected][]^_`{|}~ 
Where are they? :(

HelloHerearesomespecialcharactersWherearethey

Si bien este proceso es más personalizable, solo verifica letras y dígitos. Puede verificar manualmente los códigos de caracteres alternativamente y solo excluir algunos caracteres de puntuación en su lugar, y dejar espacios en blanco, saltos de línea, etc.

Conclusión

En este breve tutorial, echamos un vistazo a cómo puede eliminar la puntuación o ciertos caracteres especiales de una cadena en Java, usando expresiones regulares o una verificación manual en una versión mejorada. for lazo.

punto_img

Información más reciente

punto_img