我有以下字符串:獲取最後一個號碼後文本的字母數字字符串
"Hard120109Missing or invalid shipper phone number"
我將如何使用Java來得到如下:
"Missing or invalid shipper phone number"
基本上,我只想檢索文本在最後一次出現之後。
我有以下字符串:獲取最後一個號碼後文本的字母數字字符串
"Hard120109Missing or invalid shipper phone number"
我將如何使用Java來得到如下:
"Missing or invalid shipper phone number"
基本上,我只想檢索文本在最後一次出現之後。
您可以使用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
你總是可以循環(假設這是它自己的helper方法):
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 "";
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 ""
這是行不通的,如果字符串有更多的數字,並會拋出如果沒有錯誤,則爲錯誤。另外,爲此創建一個數組效率不高。 – russellsayshi 2015-04-05 17:57:43
@russellsayshi第3個選項現在效率更高:) – JClassic 2015-04-05 18:08:01
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;
}
感謝Neo,完美無缺! – bgeveritt 2015-04-06 19:07:53