J'ai un String
objet Java . Je n'ai besoin d'en extraire que des chiffres. Je vais donner un exemple:
"123-456-789"
Je voudrais "123456789"
Existe-t-il une fonction de bibliothèque qui extrait uniquement les chiffres?
Merci pour les réponses. Avant de les essayer, je dois savoir si je dois installer des bibliothèques supplémentaires?
str = str.replaceAll("[^\\.0123456789]","");
(?!\\.)
Voici une solution plus détaillée. Moins élégant, mais probablement plus rapide:
Code de test:
Production:
BTW: Je n'ai pas utilisé Character.isDigit (ch) car il accepte de nombreux autres caractères sauf 0 - 9.
la source
StringBuilder
constructeur (tel queinput.length()
) pour vous assurer qu'il n'aura pas besoin d'être réaffecté. Vous n'avez pas besoin d'exiger unString
ici;CharSequence
suffit. En outre, vous pouvez séparer l'allocation de laStringBuilder
de la collection de non-chiffres en écrivant une fonction distincte qui accepte unCharSequence
comme entrée et uneAppendable
instance comme un accumulateur de sortie.la source
Utilisation de Google Guava:
METTRE À JOUR:
L'utilisation de CharMatcher précalculé peut encore améliorer les performances
la source
Charmatcher.DIGIT
prédéfini.Cela ignorera les décimales.
par exemple: si vous avez une entrée comme
445.3kg
la sortie sera445.3
.la source
Utilisation de Google Guava:
CharMatcher est enfichable et très intéressant à utiliser, par exemple, vous pouvez faire ce qui suit:
sortie == 123-456-789
la source
Utilisez une expression régulière pour correspondre à vos besoins.
la source
Je me suis inspiré du code Sean Patrick Floyd et je l'ai peu réécrit pour des performances maximales.
Je fais un test de performance sur une chaîne très longue avec un nombre minimal et le résultat est:
Btw cela dépend de la longueur de cette chaîne. Avec une chaîne qui ne contient que 6 chiffres, la goyave est 50% plus lente et regexp 1 fois plus lente
la source
Sortie: 11
la source
Vous pouvez utiliser
str.replaceAll("[^0-9]", "");
la source
J'ai finalisé le code pour les numéros de téléphone +9 (987) 124124.
Les caractères Unicode occupent 4 octets.
la source
Code:
la source
la source