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;
}
}
答
使用的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);
感谢这个完美!感谢所有其他回复的人,都希望使用内置代码的1/2线解决方案,但这样做。 –