2012-06-19 3 views
4

У меня есть массив, который я хочу проверить последние цифры, если он находится в массиве.Использование метода String.endswith() на Java

Пример:

String[] types = {".png",".jpg",".gif"} 

String image = "beauty.jpg"; 
// Note that this is wrong. The parameter required is a string not an array. 
Boolean true = image.endswith(types); 

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

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

+1

Вы действительно пытаетесь назвать логическое «истинное»? Или это для некоторых демонстрационных целей? – BlackVegetable

+0

Оба @BlackVegetable –

+1

@GearsdfGearsdfas true - зарезервированное ключевое слово Java. И все равно это не очень хорошее имя переменной - не очень описательное. –

ответ

12
Arrays.asList(types).contains(image.substring(image.lastIndexOf('.') + 1)) 
+0

Даже проще, чем у меня. :) Does asList фактически конвертирует массив в список каждый раз? –

5

Вы можете подстроки последние 4 символа:

String ext = image.substring(image.length - 4, image.length);

, а затем использовать HashMap или какой-либо другой реализации поиска, чтобы увидеть, если он находится в списке разрешенных расширений файлов.

if(fileExtensionMap.containsKey(ext)) {

0

Использование Arrays.asList преобразовать в список. Затем вы можете проверить членство.

String[] types = {".png",".jpg",".gif"}; 
String image = "beauty.jpg"; 
if (image.contains(".")) 
    System.out.println(Arrays.asList(types).contains(
     image.substring(image.lastIndexOf('.'), image.length()))); 
Смежные вопросы