Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何测试字符串是否包含特定字符串的字符?_Java_String - Fatal编程技术网

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

Java 如何测试字符串是否包含特定字符串的字符?,java,string,Java,String,我有一个带值的字符串 String rest="bac"; String str="baack"; 我有另一个带值的字符串 String rest="bac"; String str="baack"; 如果我使用 str.contains(rest); 它返回false。但我希望输出是真实的。因为“baack”包含来自字符串rest 有可能吗?有没有这个方法?不幸的是,据我所知,没有标准的方法可以做到这一点 如果要检查第二个字符串是否至少包含第一个字符串的每个字符一次,则可以通过以下测

我有一个带值的
字符串

String rest="bac";
String str="baack";
我有另一个带值的
字符串

String rest="bac";
String str="baack";
如果我使用

str.contains(rest);
它返回false。但我希望输出是真实的。因为“baack”包含来自
字符串rest


有可能吗?有没有这个方法?

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

如果要检查第二个字符串是否至少包含第一个字符串的每个字符一次,则可以通过以下测试逐个检查每个字符:

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;

它可能不是最优的,但它工作正常且易于阅读。

由于顺序并不重要,您的问题变成第一组字符是否包含第二组字符

// 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;
//初始化集合
Set bigSet=newhashset(Arrays.asList(str));
Set smallSet=newhashset(Arrays.asList(rest));
for(字符c:小集合){
如果(!bigSet.contains(c)){
返回false;
}
}
返回true;

这里有另一种方法可以确保一个字符串中的所有字符都在第二个字符串中。这是一种很长的方法,但它是java中处理字符串中的字符的最基本的方法之一。我知道这不是最优的,但它达到了目的

        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);
        }
String rest=“bac”;
String str=“baack”;
char[]strChar=str.toCharArray();
char[]restChar=rest.tocharray();
整数计数=0;

对于(int i=0;iA
String
不是一组字符,而是按顺序排列的“列表”字符。是的,这当然是可能的。您尝试过什么?字母必须按相同的顺序排列吗?您希望
“bar”的答案是什么?包含(“ra”)
to be?没有这样做的功能。只需滚动您自己的代码。这不是很难。如果您遇到特定问题,请向我们展示您的代码,我们会帮助您。您可以使用regex。