2014-10-22 3 views
2

Я пытаюсь очистить изображения с помощью JSoup и не понимаю фрагмент кода, на который я наткнулся.Извлечение имени изображения из атрибута src (url)

Часть кода: (ЦСИ в этом случае определяется как абсолютный URL)

private static void getImages(String src) throws IOException { 

    String folder = null; 

    //Exctract the name of the image from the src attribute 
    int indexname = src.lastIndexOf("/"); 

    if (indexname == src.length()) { // Don't understand this 
     src = src.substring(1, indexname); 
    } 

    indexname = src.lastIndexOf("/"); 
    String name = src.substring(indexname, src.length()); 

    // more code 
} 

Я не понимаю if заявление. Более конкретно, когда indexname когда-либо равняется длине src?

+2

Если 'indexname == src.length()', то 'String' заканчивается косой чертой. –

+0

его проверка, чтобы убедиться, что строка src заканчивается обратным слэшем. Если это так, он удаляет его и снова проверяет, таким образом он вытягивает последний раздел URL-адреса, даже если он заканчивается обратным слэшем. –

+3

@ElliottFrisch no. У этого кода есть ошибка. indexname никогда не будет равно src.length(). –

ответ

1

Не считайте, что каждый источник, который вы найдете в Интернете, хорош.

Этот кусок кода имеет много проблем.

  1. Действительно, единственный случай, когда результатом String.lastIndexOf является длина исходной строки, является строка поиска "". Так что блок if никогда не выполняется.
  2. Операция внутри этого if блок (удалить первый символ строки) не очень полезен.
  3. Совершенно законно добавлять косые черты к URL-адресу даже после имени изображения. Попробуйте добавить '? /' К имени изображения в URL-адресе.
  4. Также совершенно не имеет права иметь имя изображения вообще. Может существовать имя скрипта с параметрами, например «http://example.com/generate-captcha.php?param1=foo&param2=bar» (не реальная ссылка, просто пример).
  5. После доменного имени вы даже не можете иметь ничего.

Поскольку нет закона, согласно которому URL-адрес должен иметь имя файла после последней косой черты или имя файла должно быть именем фактического изображения, тогда этот код работает только в части время.

Смежные вопросы