2017-07-28 3 views
1

J'ai Cordes 22test12344DC et 1name23234343dcExtrait d'abord trouvé int de chaîne

Je veux la meilleure façon d'extraire le premier trouvé int complet d'une chaîne.

Donc, cela retournera 22 et 1 à partir des exemples ci-dessus. Le premier int entier trouvé

J'ai essayé de cette façon, mais je ne veux pas de valeurs après le premier caractère.

mystr.split("[a-z]")[0] 
+0

considèrent regex pour les numéros correspondant à l'intérieur des chaînes et non! –

+0

'Je ne veux pas de valeurs après le premier caractère. 'Comment voulez-vous obtenir 22 puis –

+1

22test12344DC 22 est le premier int. – Blawless

Répondre

2

essayer.

String s = "22test12344DC"; 
String firstInt = s.replaceFirst(".*?(\\d+).*", "$1"); 
System.out.println(firstInt); 

Résultat:

22 
1

utilisant l'expression rationnelle et le bon modèle fera l'affaire: here is one example

Pattern.compile("\\d+|\\D+") 

puis briser la boucle while car vous avez besoin que le 1er match de

String myCodeString = "22test12344DC"; 
myCodeString = "1name23234343dc"; 
Matcher matcher = Pattern.compile("\\d+|\\D+").matcher(myCodeString); 

while (matcher.find()) { 
    System.out.println(matcher.group()); 
    break; 
}