这是我的代码
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"。请帮我解决这个问题。提前谢谢。
答案 0 :(得分:1)
你可以试试这个
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;
}
}
希望这有帮助
答案 1 :(得分:1)
试试这段代码
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;
}
}
希望这会有所帮助。 快乐编码:)
答案 2 :(得分:0)
我认为这会对你有所帮助。
int i=itemName.indexOf(" ") + 1;
itemName = itemName.substring(i);
i=itemName.indexOf(" ");
itemName = itemName.substring(0,i);
name = itemName;
答案 3 :(得分: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;
}