Android:检查字符串是否包含数组中的任何值的方法?

时间:2011-09-29 16:42:10

标签: java arrays string

我已经尝试搜索“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 个答案:

答案 0 :(得分:6)

试试这个:

for (String ord : ordinals) {
    if (dateint.contains(ord)) {
        dateint = dateint.substring(0, dateint.length() - 2);
        break;
    }
}

答案 1 :(得分:3)

如果您要使用其他库,Apache StringUtils可以为您提供帮助。

StringUtils.indexOfAny(String, String[])

if(StringUtils.indexOfAny(dateint, ordinals) >= 0)
    dateint=dateint.substring(0, dateint.length()-2);

答案 2 :(得分:1)

使用extended for loop

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

for (String ordinal: ordinals) {
    if dateint.contains(ordinal) {
        dateint=dateint.substring(0, dateint.length()-2);
    }
}

答案 3 :(得分:1)

你可以使用for循环

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

    }