2016-08-03 44 views
4

Hier ist mein CodeI String benötigen, die mit der Nummer aus der Liste meiner Eingabestring beginnt

String itemName = "Daily 60k tube"; 
    String name=""; 
    if(itemName.matches(".*\\d+.*")) 
     { 
      itemName = itemName.substring(itemName.indexOf(" ") + 1); 
      itemName = itemName.substring(0, itemName.indexOf(" ")); 
      name = itemName; 
     } 

Ich brauche das 60k als mein Name in der Ausgabe. Aber es stürzt mit Ausnahme ab. Dies ist die Ausnahme.

java.lang.StringIndexOutOfBoundsException: length=6; regionStart=0; regionLength=-1 
                   at java.lang.String.startEndAndLength(String.java:298) 
                   at java.lang.String.substring(String.java:1087) 

Meine Ausgabe sollte "60k" sein. Bitte helfen Sie mir, dieses Problem zu beheben. Danke im Voraus.

+0

können nicht 'split' oder' indexOf' Funktion für String sein? – Piyush

+0

können Sie mit Beispiel vorschlagen. –

+0

ist es behoben, erhalten Sie die gleiche Art von String? Ich meine "Daily 60k Tube" Typ? –

Antwort

1

können Sie versuchen, diese

String itemName = "Daily 60k tube"; 
String name=""; 
if(itemName.matches(".*\\d+.*")) 
{ 
    String[] array = itemName.split(" "); // Daily 60k tube 
    // array: {"Daily","60k","tube"} 
    for (String item : array) { 
     if (item.matches(".*\\d+.*")) { 
      name = item; 
     } 
    } 
} 

EDIT Sie auch die Zeile mit diesem

ersetzen kann
(item.matches(".*\\d+.*" + "k") 

So ist es wie

String[] array = itemName.split(" "); // Daily 60k tube 
    // array: {"Daily","60k","tube"} 
    for (String item : array) { 
     if (item.matches(".*\\d+.*" + "k") { 
      name = item; 
     } 
    } 

Hoffnung aussehen wird, das hilft

+0

Ich überprüfe bitte warten .. –

+0

Ich werde verschiedene Werte wie "Daily Cube nur 50k" bekommen und die Ausgabe sollte nur "50k" sein. –

+0

ok warten..now es überprüfen .. –

0

Ich denke, das wird dir helfen.

int i=itemName.indexOf(" ") + 1; 
    itemName = itemName.substring(i); 
    i=itemName.indexOf(" "); 
    itemName = itemName.substring(0,i); 
    name = itemName; 
+0

es funktioniert nicht. –

1

dieses Stück Code Versuchen

String Name; 
String[] array = itemName.split(" "); 
for (int i = 0; i < array.length;i++){ 
    if(Character.isDigit(array[i].charAt(0))) 
    { 
     Name = array[i]; 
     break; 
    } 

} 

Hoffnung, das hilft. Glücklich Coding :)

+0

Wenn Sie es hilfreich für Sie gefunden haben, und es löst, was Sie wollen, markieren Sie dies bitte als Antwort, damit es auch für andere nützlich sein kann. –

+0

danke für die Hilfe. –

0

Versuchen Sie, diese Art und Weise:

private static String getResult(String itemName) { 
     String[] result = itemName.split(" "); 
     for (String i : result) { 
      if (Character.isDigit(i.charAt(0))) { 
       return i; 
      } 
     } 
     return null; 
    } 
+0

danke, dass du mir geholfen hast. –