I need a line that starts with a number from my input line

Here is my code

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;
        }

I need 60k to be my output name. But this is a failure with an exception. This is an exception.

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)

My output should be "60k". Please help me solve this problem. Thanks in advance.

+4
source share
4 answers

You can try this

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 You can also replace the string with

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

So it will look like

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

Hope this helps

+1
source

Try this piece of code

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;
    }

}

Hope this helps. Happy coding :)

+1
source

, .

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

:

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

Source: https://habr.com/ru/post/1650018/


All Articles