我有一个字符串,我需要在此字符串中找到最后一个字母数字字符。无论字符串中的最后一个字母数字字符是什么,我都想要那个索引。对于
text="Hello World!- "
输出将是'd'
的索引text="Hello02, "
输出将是'2'的索引。 我知道我可以用一种“蛮力”的方式来做,检查每个字母和每个数字并找到最高指数,但我确信有一种更简洁的方法来做,但我找不到它。
答案 0 :(得分:13)
这将按预期工作,它甚至可以用于几乎所有Unicode字符和数字:
public static final int lastAlphaNumeric(String s) {
for (int i = s.length() - 1; i >= 0; i--) {
char c = s.charAt(i);
if (Character.isLetter(c) || Character.isDigit(c))
return i;
}
return -1; // no alphanumeric character at all
}
它也比其他答案快得多;)
答案 1 :(得分:3)
使用正则表达式进行繁重的工作。
获取最后一个字母数字字符的索引(如果字符串中没有字母数字,则为-1
):
int index = str.replaceAll("[^a-zA-Z0-9]*$", "").length() - 1;
获取角色本身:
String last = str.replaceAll("[^a-zA-Z0-9]*$", "").replaceAll(".(?!$)", "");
答案 2 :(得分:-1)
将字符串转换为字符数组并获取该数组的长度将为您提供任何字符串的最后一个索引...