检查字符串是否包含任何给定的charsequence

时间:2014-06-28 14:00:46

标签: java

我有一个String数组,我想检查数组的各个子部分是否包含任何,而不是CharSequence中给定字符的 all

例如

CharSequence obj = "12";
//convert section to string
String s = Arrays.asList(arr[1]).subList(0,2).toString();
if (s.contains(obj))
{
    System.out.print("yes");
}

只有在yes中找到1和2时才打印s,但我想检查1或2是否在那里?

5 个答案:

答案 0 :(得分:1)

在正则表达式中使用你的字符:

CharSequence obj = "12";
String s = Arrays.asList(arr[1]).subList(0,2).toString();
if (s.matches(".*[" + obj + "].*")) {
    // either "1" or "2" is in s
}

仅供参考,在java matches()中必须匹配整个字符串才能返回true - 这就是.*位于正则表达式两端的原因。

答案 1 :(得分:0)

CharSequence obj = "12";
      //convert section to string
      String s = Arrays.asList(arr[1]).subList(0,2).toString();

    for(int i = 0;i<obj.lenth();i++){
      if (s.indexof(obj.charAt(i)) != -1)
        {
            System.out.print("yes");
        }
    }

答案 2 :(得分:0)

我相信您问题的解决方案与此处提出的问题类似:In Java, how can I determine if a char array contains a particular character?

这个问题提供了一些有趣的解决方案:1)你可以使用indexOf,或2)你可以测试你在数组中查找ISN&#T;的条件。

答案 3 :(得分:0)

考虑下面显示的方法 containsAny

public class InTest {   
    public static boolean containsAny(String strToSearch, CharSequence chars) {
        for (int i=0;i<chars.length(); i++) {
            if (strToSearch.indexOf(chars.charAt(i)) >= 0) {
                return true;
            }
        }
        return false;

    }
    public static void main(String[] args) {
        System.out.println(containsAny(args[0],args[1]));
    }
}

尝试一下:

C:\apps\simpleakka>javac InTest.java

C:\apps\simpleakka>java InTest "abcdefghij" "i"
true

C:\apps\simpleakka>java InTest "abcdefghij" "n"
false

答案 4 :(得分:0)

你能不能:

boolean found = false;
for(int i = 0, i < obj.length() && !found; i++)
{
    if(s.contains(obj.subSequence(i, i + 1)))
    {
        found = true;
    }
}
if(found)
{
    System.out.print("yes");
}