2012-01-21 35 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,使其返回的.后一切

如果会出现这是代码旨在返回文件扩展名。

相关问题