2012-01-21 67 views
-2
public String extension(File F) 
{ 
    String FileName = F.getName(); 
    int LastIndex = FileName.lastIndexOf(DotSymbol); 
    if(LastIndex > 0 && LastIndex <FileName.length() -1) 
    { 
    return FileName.substring(LastIndex+1); 
    }else 
    { 
     return ""; 

我不明白爲什麼我需要從if語句中減1,並添加1到子字符串。有人請向我解釋這部分代碼

+0

你試試看,如果你不這樣做?: –

回答

0

您發現有一個點的字符串的最後一個位置的長度。如果你找到一個點,那麼你將返回點後的子串(這會得到文件擴展名)。你減去一個,因爲如果點是字符串的最後一個字符,那麼你沒有文件擴展名。你添加一個,因爲你不想返回點,你想返回點(文件擴展名)後面的內容。

+0

非常感謝,會發生什麼,讓我真正的好:)/ –

+0

不客氣。我很高興能夠提供幫助。 – Boundless

0

您刪除1,因爲lasiIndexOf返回的位置從0開始。

您加1,刪除「」的擴展名。

0

因爲字符串的索引從零開始,最後指數將字符串-1

1

的lastIndexOf()方法返回-1,如果作爲參數傳遞的字符串沒有被找到作爲FileName子串。

所以,檢查

if(LastIndex > 0 && LastIndex <FileName.length() -1) 

沒有任何意義,我。

我本來期望這個代替:

if (LastIndex != -1) 
    return FileName.substring(LastIndex+1); 
else 
    return ""; 

對於

return FileName.substring(LastIndex+1); 

這取決於上下文:你想從文件名中提取什麼呢?

如果您嘗試提取文件擴展名,則需要+1以跳過字符串中找到的.字符的出現。

參考文獻:String documentation

0

的代碼尋找.

首先檢查該忽略與一個.作爲* nix系統,它表示一個特殊的文件或目錄開始文件。

substring()呼籲增加1,使其返回的.後一切

如果會出現這是代碼旨在返回文件擴展名。

相關問題