我有一个字符串,需要找到该字符串中任何字母数字字符的最后一次出现。无论该字符串中最后一个字母数字字符是什么,我都想要它的索引。
text="Hello World!- "
输出将是'd'的索引。
text="Hello02, "
输出将是'2'的索引。 我知道可以通过“暴力”方式实现,检查每个字母和每个数字并找到最高索引,但我相信有更简洁的方法,但我找不到它。
我有一个字符串,需要找到该字符串中任何字母数字字符的最后一次出现。无论该字符串中最后一个字母数字字符是什么,我都想要它的索引。
text="Hello World!- "
text="Hello02, "
这将按预期工作,甚至可以在几乎所有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
):
int index = str.replaceAll("[^a-zA-Z0-9]*$", "").length() - 1;
String last = str.replaceAll("[^a-zA-Z0-9]*$", "").replaceAll(".(?!$)", "");
"foo,bar,"
进行测试会得到 6
(这是正确的)。而且,即使没有字母数字字符,它仍然可以工作——索引将为 -1
。(已经修复了 int
,但还是谢谢) - Bohemian