Eclipse - Eliminar caracteres de un texto y contar los eliminados

 
Vista:

Eliminar caracteres de un texto y contar los eliminados

Publicado por Rubén (2 intervenciones) el 14/11/2021 00:04:56
Hola buenas, estoy programando en eclipse y tengo un problema. Teniendo un texto en String, como puedo comparar letra a letra cada carácter y si es distinto de:
una letra mayúscula, letra minúscula, un número, un espacio, un punto y coma, el punto, la coma, y los caracteres ‘_’, ‘-‘, ‘#’, ‘@’, y ‘/’. Sustituir ese carácter distinto por un espacio y contar cada vez que esto pase.

Se que se podría reemplazar con un replaceAll, pero no se como desde ahí contar cada vez que eso suceda.

Por ejemplo:
"RT: 🌋 Mediante realidad virtual actualizamos la situación del volcán a día de hoy, 13 de octubre (Coladas, movimientos sísmicos, etc.). Con las explicaciones de @victorioperezm. #ErupcionLaPalma #VolcanLaPalma @VideoreportCan @RTVCes https://t.co/eppTqX9OTG"

Este mensaje, sería dejar todos los caracteres que he nombrado antes y eliminar los no deseados como ð,Ÿ y demás de una forma sencilla a poder ser.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3
Ha mantenido su posición en Eclipse (en relación al último mes)
Gráfica de Eclipse

Eliminar caracteres de un texto y contar los eliminados

Publicado por Kabuto (14 intervenciones) el 14/11/2021 21:49:43
Una forma sería hacer un método que disponga de un String con TODOS los caracteres que vamos a considerar como válidos y aceptables.
Por cierto, creo que habría que incluir los paréntesis () como caracteres válidos


Luego recorremos la cadena original, la que esta "sucia" de caracteres no válidos, y vamos preguntando letra a letra si coincide o no con alguna de las letras consideradas validas.

Si coincide con alguna, es válida y la pasamos a otro String que iremos construyendo letra a letra, solo con las válidas.
Si no coincide, entonces no es un carácter aceptable, así que se queda fuera del nuevo String y además incrementamos un contador de letras eliminadas.

Al terminar el bucle que recorre la cadena original, mostramos en pantalla el contador de eliminados y retornamos la nueva cadena, ya "limpia" de caracteres no válidos.

Ejemplo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class EliminarCaracteres {
 
	public static void main(String[] args) {
 
		String cadenaSucia = "RT: 🌋 Mediante realidad virtual actualizamos la situación del volcán a día de hoy, 13 de octubre (Coladas, movimientos sísmicos, etc.). Con las explicaciones de @victorioperezm. #ErupcionLaPalma #VolcanLaPalma @VideoreportCan @RTVCes https://t.co/eppTqX9OTG";
 
		String cadenaLimpia = limpiarCadena(cadenaSucia);
 
		System.out.println("\nCadena limpiada:\n" + cadenaLimpia);
	}
 
	public static String limpiarCadena(String cadena) {
 
		final String VALIDOS = "abcdefghijklmnopqrsetuvwxyz áéíóú_1234567890()-,.;#@/";
		int eliminados = 0;
		StringBuilder cadenaLimpia = new StringBuilder();
 
		for (int i = 0;  i < cadena.length(); i++) {
			//Seleccionamos caracter
			Character caracter = cadena.charAt(i);
			//Comprobamos si existe en la lista de VALIDOS
			if (VALIDOS.contains(caracter.toString().toLowerCase()))
				cadenaLimpia.append(caracter); //Si existe, lo aceptamos en la nueva cadena
			else //No está en los VALIDOS
				eliminados++;//Queda fuera de la nueva cadena, lo contamos como eliminados
		}
		//Bucle for terminado, informamos de los caracteres eliminados
		System.out.println("Caracteres eliminados: " + eliminados);
		//Retornamos la cadena limpia
		return cadenaLimpia.toString();
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Eliminar caracteres de un texto y contar los eliminados

Publicado por Rubén (2 intervenciones) el 15/11/2021 16:36:33
Vale, muchas gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar