varios una repetidos regular reemplazar primeros primer para numeros los expresion especiales especial eliminar caracteres caracter cadena borrar java string

java - una - Cadena: ¿cómo reemplazar múltiples caracteres posibles con un solo carácter?



reemplazar caracter especial java (3)

Use String#replace() lugar de String#replaceAll() , no necesita expresiones regulares para el reemplazo de un solo carácter.

Creé la siguiente clase para probar lo que es más rápido, pruébalo:

public class NewClass { static String s = "some_string with spaces _and underlines"; static int nbrTimes = 10000000; public static void main(String... args) { long start = new Date().getTime(); for (int i = 0; i < nbrTimes; i++) doOne(); System.out.println("using replaceAll() twice: " + (new Date().getTime() - start)); long start2 = new Date().getTime(); for (int i = 0; i < nbrTimes; i++) doTwo(); System.out.println("using replaceAll() once: " + (new Date().getTime() - start2)); long start3 = new Date().getTime(); for (int i = 0; i < nbrTimes; i++) doThree(); System.out.println("using replace() twice: " + (new Date().getTime() - start3)); } static void doOne() { String new_s = s.toLowerCase().replaceAll(" ", "_").replaceAll(".", "_"); } static void doTwo() { String new_s2 = s.toLowerCase().replaceAll("[ .]", "_"); } static void doThree() { String new_s3 = s.toLowerCase().replace(" ", "_").replace(".", "_"); } }

Obtengo el siguiente resultado:

usando replaceAll () dos veces: 100274

utilizando replaceAll () una vez: 24814

usando replace () dos veces: 31642

Por supuesto, no he perfilado la aplicación para el consumo de memoria, que podría haber dado resultados muy diferentes.

Me gustaría reemplazar todo ''.'' y '' '' con un ''_''

pero no me gusta mi código ...

¿Hay una manera más eficiente de hacer esto que:

String new_s = s.toLowerCase().replaceAll(" ", "_").replaceAll(".","_");

?

toLowerCase () simplemente porque también lo quiero más bajo ...


s.replaceAll("[//s//.]", "_")


String new_s = s.toLowerCase().replaceAll("[ .]", "_");

EDITAR:

replaceAll está utilizando expresiones regulares y usando . dentro de una clase de personaje [ ] simplemente reconoce a . en lugar de cualquier personaje.