2013-05-07 62 views
-8

我百思不得其解,爲什麼posOfDot將返回15:爲什麼indexOf返回一個不正確的索引?

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
  • 兩個字符符號和字符串符號( '' 和 「」)

- 編輯 -

每個列表(列表1和列表2)都包含一個文件名列表。這些不是實際的文件本身,而只是文件名。

+2

我們應該如何知道這些文件中有什麼? – m3th0dman 2013-05-07 20:16:03

+0

我沒有搜索文件 - 我正在搜索文件名。 – 2013-05-07 20:16:50

+5

也許使用正確的'String'會產生更好的結果?最好舉例說明爲什麼不給這樣的變量命名,即使你認爲沒有什麼可能出錯。 'int posOfDot = l2.indexOf(「。」);' - 這就是*完全*其中'.'在'l2'中 – 2013-05-07 20:17:53

回答

4
l2FileNAme: scenario8_items.txt 

計數屏幕上的字,.是在第16位,這是15一個從零開始的索引。你在l2上執行此操作。

似乎正確的輸出給我。

相關問題