2016-05-16 14 views
0

Sehr einfache Frage - Ich habe eine Zeichenfolge, die wie PR:MTH 1 MTR 7 aussieht. Ich möchte die Zahlen in dieser Zeichenfolge zu ganzzahligen Variablen extrahieren.So extrahieren Sie zwei Ganzzahlen aus unbekannten Indizes aus einer Zeichenfolge

Das Problem ist, dass ich nicht weiß, wie viele Ziffern diese ganzen Zahlen haben. zum Beispiel PR:MTH 100000 MTR 777 ist auch eine gültige Zeichenfolge. Daher kann ich nicht genau angeben, wo die Zahlen stehen.

Alles, was wir sicher sagen können ist, dass das MSB der ersten Nummer bei Index 7 ist (ich habe gezählt).

Gibt es eine String-Methode oder StringBuilder-Methode in Java, die das tut? oder muss ich eine eigene schreiben?

+0

'String.split (" [:] ") [indexOfInteger]' –

+0

versuchen, Unterzeichenfolge mit regulärem Ausdruck zu tun – Dhruv

Antwort

1

Sie sollten split (“„) versuchen und dann Werte annehmen u müssen und konvertieren

+0

Danke! sehr hilfreich. –

3

String#split ist dein Freund in dieser Situation

Split die Zeichenfolge mit Leerzeichen und Doppelpunkte auf ganzzahlige und die entsprechenden Indizes analysieren.

String s = "PR:MTH 100000 MTR 777"; 
String[] split = s.split("[ :]"); 
int one = Integer.parseInt(split[2]); 
int two = Integer.parseInt(split[4]); 
+1

Vielen Dank! sehr hilfreich. –

1

Sie können yourString.split(" "); tun und das Array für alle Zahlen, mit einem Try-Catch-Block suchen iterieren. Um sie zu speichern, können Sie eine ArrayList<Integer> verwenden.

ich etwas tun würde, wie:

String myString = "dsfsd 12 12 dd"; 
    ArrayList<Integer> numbers = new ArrayList<>(); 

    String[] splitString = myString.split(" "); 

    for (String split : splitString) { 
     try { 
      numbers.add(Integer.valueOf(split)); 
     } catch (java.lang.NumberFormatException e) { 
      //not a number 
     } 
    } 

    System.out.printf("I have %d numbers in my String! \n", numbers.size()); 

Um die Zahlen zu erhalten, müssen Sie nur die ArrayList iterieren.

for (Integer number : numbers) { 
     //your code 
     System.out.println(number); 
    } 

Hoffe das hilft dir!

0

Um den allgemeinen Fall regex zu lösen verwenden, um die Zahlen zu finden:

String number1 = str.replaceAll("\\D*(\\d+).*", "$1"); 
String number2 = str.replaceAll("\\D*\\d+\\D+(\\d+).*", "$1"); 

Dies hat den Vorteil, mit Eingang arbeiten, die keine klaren Trennzeichen haben, zB wenn die Eingabezeichenfolge

war
foo123bar456baz 

Der obige Code würde 123 und 456 erfolgreich extrahieren.

Verwandte Themen