为什么indexOf返回不正确的索引?

时间:2013-05-07 20:14:22

标签: java

我感到困惑的是为什么posOfDot正在返回15:

for(String l2 : list2){

    System.out.println("l2FileNAme: "+l2);
    int posOfI= l2.indexOf("_")+1;
    System.out.println("posOfI: "+posOfI);

    String l2FileName = l2.substring(0,posOfI);
    System.out.println("l2FileNAme: "+l2FileName);

    for(String l1 : list1){

        int posOfDot= l2.indexOf(".");
        System.out.println("posOfDot: "+posOfDot);
        //substring the root of the file
        //String l1FileName = l1.substring(0,posOfDot); //fails here as posOfDot exceeds string length in substring.
        System.out.println("l1FileNAme: "+l1);  
    }
}

输出:

l2FileNAme: scenario8_items.txt
posOfI: 10
l2FileNAme: scenario8_
posOfDot: 15
l1FileNAme: scenario8_.csv

我期待posOfDot为10,就像posOfI一样,但它会返回15.为什么?

我尝试过的事情:

  • lastIndexOf
  • 的indexOf
  • char表示法和字符串表示法(''""")

- 编辑 -

每个列表(list1和list2)都包含文件名列表。这些不是实际的文件本身,而只是文件名。

1 个答案:

答案 0 :(得分:4)

l2FileNAme: scenario8_items.txt

计算屏幕上的字符,.位于第16位,在零基础索引中为15。您是在l2上执行此操作。

似乎对我来说输出正确。