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

问题描述:

我试过寻找“Java检查字符串是否包含数组中的值”以及其他变体,但还没有提出任何希望有人可以帮助我的东西。我有下面的代码,我想清理:Android:检查字符串是否包含数组中的任何值的方法?

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); 
} 

基本上检查数组中的任何值是否在我的字符串中。我试图使用最少量的代码reuqired,以便它看起来比那个丑陋的if/else块更干净,并且不使用for/next循环......这可能是我唯一的选择。

试试这个:

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

感谢这个完美!感谢所有其他回复的人,都希望使用内置代码的1/2线解决方案,但这样做。 –

使用的extended for loop

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

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

它救了我 我用这个逻辑来建立我自己的...它工作:) – Noman

如果达到使用其他库,在Apache你可以使用循环为

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

    } 

StringUtils可以帮助你。

StringUtils.indexOfAny(String, String[])

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