Кто-то, пожалуйста, объясните мне эту часть кода - PullRequest
0 голосов
/ 21 января 2012
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 "";

Я не понимаю, почему мне нужно уменьшить 1 от оператора if и добавить 1 к подстроке.

Ответы [ 5 ]

1 голос
/ 21 января 2012

Метод 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);

Это зависит от контекста: что вы хотитеизвлечь из FileName?

Если вы пытаетесь извлечь расширение файла, тогда +1 необходим, чтобы пропустить вхождение символа ., найденного в строке.

Ссылки: Строка документации

0 голосов
/ 21 января 2012

Код ищет .

Первая проверка игнорирует файлы, которые запускаются с ., как в * nix системах, которые обозначают специальный файл или каталог.

Вызов substring() добавляет 1, чтобы он возвращал все после ..

Если появится, то это код, предназначенный для возврата расширений файлов.

0 голосов
/ 21 января 2012

, поскольку индекс строк начинается с нуля, а последним индексом будет длина строки -1

0 голосов
/ 21 января 2012

Вы находите последнюю позицию строки, которая имеет точку.Если вы найдете точку, то вы вернете подстроку после точки (это получит расширение файла).Вы вычитаете один, потому что, если точка является последним символом строки, у вас нет расширения файла.Вы добавляете один, потому что вы не хотите возвращать точку, вы хотите вернуть то, что находится после точки (расширение файла).

0 голосов
/ 21 января 2012

Вы удаляете 1, потому что lasiIndexOf возвращает позицию, начинающуюся с 0.

Вы добавляете 1, чтобы удалить "."расширения.

...