6

我有一个字符串,我需要在这个字符串中找到最后一次出现的任何字母数字字符。无论字符串中的最后一个字母数字字符是哪个,我都想要那个索引。为了

text="Hello World!- "

输出将是“d”的索引

text="Hello02, "

输出将是“2”的索引。我知道我可以用一种“蛮力”的方式来做到这一点,检查每个字母和每个数字并找到最高的索引,但我确信有一种更简洁的方法,但我找不到它。

4

3 回答 3

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
}

它也比其他答案快得多;)

于 2014-01-22T13:09:10.463 回答
3

使用正则表达式来完成繁重的工作。

要获取最后一个字母数字字符的索引(-1如果字符串中没有字母数字):

int index = str.replaceAll("[^a-zA-Z0-9]*$", "").length() - 1;

要获取角色本身:

String last = str.replaceAll("[^a-zA-Z0-9]*$", "").replaceAll(".(?!$)", "");
于 2014-01-22T13:08:25.257 回答
-1

将字符串转换为字符数组并获取该数组的长度将为您提供任何字符串的最后一个索引...

于 2014-01-22T13:17:59.717 回答