Android: способ проверить, содержит ли строка какие-либо значения из массива? - PullRequest
1 голос
/ 29 сентября 2011

Я пытался найти «Проверка Java, содержит ли строка значения из массива» и другие варианты этого, но не нашел ничего, поэтому надеялся, что кто-нибудь может мне помочь. У меня есть следующий код, который я хотел бы очистить:

if (dateint.contains("th")){
        dateint=dateint.substring(0, dateint.length()-2);
    } else if (dateint.contains("st")){
        dateint=dateint.substring(0, dateint.length()-2);
    } else if (dateint.contains("nd")){
        dateint=dateint.substring(0, dateint.length()-2);
    } else if (dateint.contains("rd")){
        dateint=dateint.substring(0, dateint.length()-2);
    }

Мне интересно, могу ли я сделать что-то вроде следующего (не истинный код, а мыслить в коде):

String[] ordinals = {"th", "st", "nd", "rd"};
if dateint.contains(ordinals) {
dateint=dateint.substring(0, dateint.length()-2);
}

в основном проверяет, есть ли какие-либо значения в массиве в моей строке. Я пытаюсь использовать наименьшее количество необходимого кода, чтобы он выглядел чище, чем тот уродливый блок if / else, и без использования цикла for / next ... который может быть моим единственным вариантом.

Ответы [ 4 ]

6 голосов
/ 29 сентября 2011

Попробуйте это:

for (String ord : ordinals) {
    if (dateint.contains(ord)) {
        dateint = dateint.substring(0, dateint.length() - 2);
        break;
    }
}
3 голосов
/ 29 сентября 2011

Если вы используете другие библиотеки, вам может помочь Apache StringUtils.

StringUtils.indexOfAny (String, String [])

if(StringUtils.indexOfAny(dateint, ordinals) >= 0)
    dateint=dateint.substring(0, dateint.length()-2);
1 голос
/ 29 сентября 2011

вы можете использовать для цикла для этого

    for(int i = 0;i < ordinals.length;i++){
      if dateint.contains(ordinals[i]) {
        dateint=dateint.substring(0, dateint.length()-2);
        break;
       }

    }
1 голос
/ 29 сентября 2011

Используйте extended for loop:

String[] ordinals = {"th", "st", "nd", "rd"};

for (String ordinal: ordinals) {
    if dateint.contains(ordinal) {
        dateint=dateint.substring(0, dateint.length()-2);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...