91 votes

Extraire des chiffres d'une chaîne de caractères - StringUtils Java

J'ai une chaîne de caractères et je veux extraire la (seule) séquence de chiffres de cette chaîne.

Exemple : helloThisIsA1234Sample. Je veux le 1234

Il est évident que la séquence de chiffres n'apparaîtra qu'une seule fois dans la chaîne, mais pas à la même position.

(pour ceux qui le demanderont, j'ai un nom de serveur et j'ai besoin d'en extraire un numéro spécifique).

Je voudrais utiliser la classe StringUtils de Apache commomns.

Gracias.

4voto

Shessuky Points 231

Essayez ceci :

String s = "helloThisIsA1234Sample";
s = s.replaceAll("\\D+","");

Cela signifie : remplacer toutes les occurrences des caractères numériques (0 -9) par une chaîne vide !

4voto

Prasanna Points 63

Goyave CharMatcher extraits de classe Integer d'un String .

String text="Hello1010";
System.out.println(CharMatcher.digit().retainFrom(text));

Rendement :

1010

3voto

J'ai créé une classe de test JUnit (en tant que connaissance/information supplémentaire) pour le même problème. J'espère que cela vous sera utile.

   public class StringHelper {
    //Separate words from String which has gigits
        public String drawDigitsFromString(String strValue){
            String str = strValue.trim();
            String digits="";
            for (int i = 0; i < str.length(); i++) {
                char chrs = str.charAt(i);              
                if (Character.isDigit(chrs))
                    digits = digits+chrs;
            }
            return digits;
        }
    }

Et le cas de test JUnit est :

 public class StringHelperTest {
    StringHelper helper;

        @Before
        public void before(){
            helper = new StringHelper();
        }

        @Test
    public void testDrawDigitsFromString(){
        assertEquals("187111", helper.drawDigitsFromString("TCS187TCS111"));
    }
 }

2voto

Siva Points 2197

Vous pouvez utiliser l'expression régulière suivante.

string.split(/ /)[0].replace(/[^\d]/g, '')

2voto

Az.MaYo Points 516
        String line = "This order was32354 placed for QT ! OK?";
        String regex = "[^\\d]+";

        String[] str = line.split(regex);

        System.out.println(str[1]);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X