Tengo un String
objeto Java Necesito extraer solo dígitos de él. Daré un ejemplo:
"123-456-789"
quiero "123456789"
¿Existe una función de biblioteca que extrae solo dígitos?
Gracias por las respuestas Antes de probar esto, ¿debo saber si tengo que instalar alguna biblioteca adicional?
str = str.replaceAll("[^\\.0123456789]","");
(?!\\.)
Aquí hay una solución más detallada. Menos elegante, pero probablemente más rápido:
Código de prueba:
Salida:
Por cierto: no utilicé Character.isDigit (ch) porque acepta muchos otros caracteres, excepto 0 - 9.
fuente
StringBuilder
constructor (comoinput.length()
) para asegurarse de que no sea necesario reasignarlo. No necesita exigir unString
aquí;CharSequence
es suficiente Además, puede separar la asignación de laStringBuilder
colección de no dígitos escribiendo una función separada que acepte unaCharSequence
entrada y unaAppendable
instancia como un acumulador de salida.fuente
Usando Google Guava:
ACTUALIZAR:
El uso de CharMatcher precalculado puede mejorar aún más el rendimiento
fuente
Charmatcher.DIGIT
predefinido.Esto ignorará los puntos decimales.
por ejemplo: si tiene una entrada como
445.3kg
será la salida445.3
.fuente
Usando Google Guava:
CharMatcher es conectable y bastante interesante de usar, por ejemplo, puede hacer lo siguiente:
salida == 123-456-789
fuente
Use expresiones regulares para cumplir con sus requisitos.
fuente
Me inspiré en el código Sean Patrick Floyd y lo reescribí poco para obtener el máximo rendimiento que obtengo.
Hago una prueba de rendimiento a una cadena muy larga con números mínimos y el resultado es:
Por cierto, depende de la longitud de esa cadena. Con una cuerda que contiene solo 6 números, la guayaba es 50% más lenta y la expresión regular 1 veces más lenta
fuente
Salida: 11
fuente
Puedes usar
str.replaceAll("[^0-9]", "");
fuente
He finalizado el código para los números de teléfono +9 (987) 124124.
Los caracteres Unicode ocupan 4 bytes.
fuente
Código:
fuente
fuente