android – 我需要以输入字符串中的数字开头的字符串

这是我的代码

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

我在输出中需要60k作为我的名字.但它有异常崩溃.
这是个例外.

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)

我的输出应该是“60k”.请帮我解决这个问题.提前致谢.

最佳答案 你可以试试这个

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

编辑您也可以用此替换该行

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

所以它看起来像

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

希望这可以帮助

点赞