方法一:使用正则表达式
java
public static String getLastNumber(String str) {
if (str == null) {
return "";
}
// 使用正则匹配最后一个数字序列
java.util.regex.Matcher matcher = java.util.regex.Pattern.compile("(\\d+)(?!.*\\d)")
.matcher(str);
return matcher.find() ? matcher.group(1) : "";
}
方法二:从后向前遍历字符串
java
public static String getLastNumber(String str) {
if (str == null || str.isEmpty()) {
return "";
}
StringBuilder number = new StringBuilder();
// 从后向前遍历
for (int i = str.length() - 1; i >= 0; i--) {
char c = str.charAt(i);
if (Character.isDigit(c)) {
number.insert(0, c); // 在开头插入保持顺序
} else if (number.length() > 0) {
// 已经找到数字且遇到非数字字符,结束查找
break;
}
}
return number.toString();
}
方法三:使用String的lastIndexOf和substring
java
public static String getLastNumber(String str) {
if (str == null) {
return "";
}
int lastDigitIndex = -1;
int firstDigitIndex = -1;
// 找到最后一个数字的位置
for (int i = str.length() - 1; i >= 0; i--) {
if (Character.isDigit(str.charAt(i))) {
if (lastDigitIndex == -1) {
lastDigitIndex = i;
}
firstDigitIndex = i;
} else if (lastDigitIndex != -1) {
break;
}
}
return (lastDigitIndex != -1)
? str.substring(firstDigitIndex, lastDigitIndex + 1)
: "";
}
12-10