在字母数字字符串中的最后一个数字后面获取文本

时间:2015-04-05 17:38:12

标签: java

我有以下字符串:

"Hard120109Missing or invalid shipper phone number"

我如何使用Java来获得以下内容:

"Missing or invalid shipper phone number"

基本上,我只想在最后一次出现数字后检索文本。

4 个答案:

答案 0 :(得分:3)

String[] arr = yourString.split("[0-9]+");

String newString = arr[1]; //get string after first number

首先,将字符串拆分为任意数字,然后从数组中获取字符串

对于不同数量的数字:

String[] arr = yourString.split("[0-9]+", 2);

StringBuilder sb = new StringBuilder();

if (arr.length <= 1) 
    throw new RuntimeException("Invalid String");

for (int i = 1; i < arr.length; i++)
     sb.append(arr[i]);
String newString = sb.toString();

另一种方式:

String newString  = "";
try{
    yourString.split("[0-9]+", 2)[1];
} catch(ArrayIndexOutOfBoundsException e){} //leaves newString as ""

答案 1 :(得分:1)

您可以使用split获取字符串的最后一部分

String msg = "Hard120109Missing or invalid shipper phone number";
String val[] = msg.split("\\d+");
if (val.length > 1) {
  System.out.println("Message= " + val[1]);
} 

输出

Message= Missing or invalid shipper phone number

答案 2 :(得分:1)

String str = "Hard120109Missing or invalid shipper phone number";
String newStr = "";
for (int i = str.length() - 1; i >= 0; i--) {
    char ch = str.charAt(i);
    if (Character.isDigit(ch)) break;

    newStr =  ch + newStr;
}

答案 3 :(得分:0)

你总是可以循环(假设这是它自己的辅助方法):

for(int i = str.length()-1; i >= 0; i--) {
    char c = str.charAt(i);
    if(c >= '0' && c <= '9') {
        return str.substring(i+1);
    }
}
return "";