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 :(得分:1)
如果未将作为参数传递的String作为FileName
的子字符串找到,则lastIndexOf()方法返回-1。
所以,检查
if(LastIndex > 0 && LastIndex <FileName.length() -1)
对我没有任何意义。
我原本期望这样:
if (LastIndex != -1)
return FileName.substring(LastIndex+1);
else
return "";
至于
return FileName.substring(LastIndex+1);
这取决于上下文:你想从FileName中提取什么?
如果您尝试提取文件扩展名,则需要+1
来跳过字符串中找到的.
字符的出现。
参考文献:String documentation
答案 1 :(得分:0)
删除1,因为lasiIndexOf返回从0开始的位置。
添加1以删除“。”扩展名。
答案 2 :(得分:0)
因为字符串索引从零开始,最后一个索引将是字符串-1
的长度答案 3 :(得分:0)
您正在查找带点的字符串的最后位置。如果找到一个点,那么你将返回点后的子字符串(这将获得文件扩展名)。你减去一个,因为如果点是字符串的最后一个字符,你没有文件扩展名。你添加一个,因为你不想返回点,你想要返回点后面的内容(文件扩展名)。
答案 4 :(得分:0)
代码正在寻找.
第一次检查忽略启动的文件与.
一样的* nix系统,表示特殊文件或目录。
substring()
来电添加了1
,以便在 .
之后返回所有内容。
如果出现这个代码意味着返回文件扩展名。