我使用两个不同的字符串来测试“\t”的最后一个索引,但它们都返回 4。我认为应该是 5 和 4。我检查了 oracle 文档,但我不明白为什么。有人可以告诉我为什么吗?谢谢!
System.out.println("abc\t\tsubdir".lastIndexOf("\t"));
System.out.println("abct\tsubdir".lastIndexOf("\t"));
我使用两个不同的字符串来测试“\t”的最后一个索引,但它们都返回 4。我认为应该是 5 和 4。我检查了 oracle 文档,但我不明白为什么。有人可以告诉我为什么吗?谢谢!
System.out.println("abc\t\tsubdir".lastIndexOf("\t"));
System.out.println("abct\tsubdir".lastIndexOf("\t"));
让索引的数量更好地理解它:
字符串 1
a b c \t \t s u b d i r
0 1 2 3 4 5 6 7 8 9 10
^-----------------------------------last index of \t (for that you get 4)
字符串 2
a b c t \t s u b d i r
0 1 2 3 4 5 6 7 8 9 10
^-----------------------------------last index of \t (for that you get 4)
在 Java中有一些特殊字符应该被\
(tab \t
, breadline \n
, quote \"
...) 转义,所以它算作一个字符而不是 2
在第一行中,最后一个选项卡位于 4
a b c <tab> <tab>
在第二行中,最后一个选项卡也在 4
a b c t <tab>
\t
计为 1 个字符
这是因为\t
不计为两个字符,它是一个转义序列并且仅计为一个字符。
您可以在此处找到转义序列的完整列表:https ://docs.oracle.com/javase/tutorial/java/data/characters.html
需要注意的是,计数从零开始,'\t' 仅计为一个字符。有时这可能会令人困惑,尤其是如果您忘记从零开始。
0|1|2| 3| 4
a|b|c|\t|\t
a|b|c| t|\t
Java 中的计数从零开始,这就是为什么 first 和 sysout 返回 4 的原因。为了您更好地理解,我添加了第三个 sysout,您可以在其中找到 \t 的最后一个索引将返回零。
/**
* @author itsection
*/
public class LastIndexOf {
public static void main(String[] args) {
System.out.println("abc\t\tsubdir".lastIndexOf("\t"));
System.out.println("abct\tsubdir".lastIndexOf("\t"));
System.out.println("\tabctsubdir".lastIndexOf("\t"));
}
}// the output will be 4,4,0