如何测试String是否包含特定字符串的字符?

时间:2015-03-31 17:06:55

标签: java string

我有String

String rest="bac";

我有另一个String

String str="baack";

如果我使用

str.contains(rest);

它返回false。但我希望输出是真的。由于“baack”包含来自string rest

的所有字母

有可能这样做吗?有没有这种方法?

3 个答案:

答案 0 :(得分:0)

不幸的是,据我所知,没有标准方法可以做到这一点。

如果您想要检查第二个字符串是否至少包含第一个字符串的每个字符一次,那么您可以使用以下测试逐个检查每个字符:

boolean result = true;
for (char c : test.toCharArray()) {
    result &= str.indexOf(c) > -1;
}
return result;

或者:

for (char c : test.toCharArray()) {
    if (str.indexOf(c) == -1) {
        return false;
    }
}
return true;

它可能不是最佳的,但它有效并且阅读起来很简单。

答案 1 :(得分:0)

由于订单并不重要,因此您的问题将变为第一组字符是否包含第二组字符。

// Initial the sets
Set<char> bigSet = new HashSet<char>(Arrays.asList(str)); 
Set<char> smallSet = new HashSet<char>(Arrays.asList(rest)); 

for (char c : smallSet) {
    if(!bigSet.contains(c)){
        return false;
    }
}
return true;

答案 2 :(得分:0)

这是确保一个字符串中的所有字符都在第二个字符串中的另一种方法。这是一种冗长的方式,但它是在java中处理String中字符的基本方法之一。我知道它不是最佳的,但它符合目的。

        String rest="bac";
        String str="baack";
        char[] strChar = str.toCharArray();
        char[] restChar = rest.toCharArray();
        int count = 0;

        for(int i=0;i<restChar.length;i++){
            for(int j=0;j<strChar.length; j++){
                if(restChar[i] == strChar[j]){
                    count++;
                }
            }
        }

        if(count>=restChar.length){
            System.out.println("All the characters from: "+rest+" are in: "+str);
        }