lastIndexOf()用于查找最后一个字母数字字符

Ive*_*rie 6 java string lastindexof

我有一个字符串,我需要在这个字符串中找到最后一个字母数字字符.无论字符串中的最后一个字母数字字符是什么,我都想要那个索引.对于

text="Hello World!- "
Run Code Online (Sandbox Code Playgroud)

输出将是'd'的索引

text="Hello02, "
Run Code Online (Sandbox Code Playgroud)

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

Njo*_*jol 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
}
Run Code Online (Sandbox Code Playgroud)

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

  • @Iverie然后请接受答案(左边是绿色勾号).这不仅会给我们提供一些要点,而且还会使问题从未回答的问题清单中消失. (3认同)

Boh*_*ian 3

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

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

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

要获取角色本身:

String last = str.replaceAll("[^a-zA-Z0-9]*$", "").replaceAll(".(?!$)", "");
Run Code Online (Sandbox Code Playgroud)