Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.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 - Fatal编程技术网

在java中从字符串中查找字符串

在java中从字符串中查找字符串,java,Java,我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串是否包含java中的“12,3,14” 我的代码: String str1 = "1,3,5,7,9,11,12,14"; String str2 = "12,3,14,"; if(str1.contains(str2)){ System.out.println("Found!"); } 探索。有split() 用逗号分隔第二个字符串 然后检查每个元素是否包含在源中 在代码中看不到任何问题

我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串是否包含java中的“12,3,14”

我的代码:

String str1 = "1,3,5,7,9,11,12,14";
String str2 = "12,3,14,";

if(str1.contains(str2)){
                System.out.println("Found!");
}
探索。有
split()

  • 用逗号分隔第二个字符串
  • 然后检查每个元素是否包含在源中

  • 在代码中看不到任何问题。找不到您的
    ,因为str1实际上不包含
    “12,3,14”

    但是如果您想在
    str1
    中单独查找它们,您可以拆分
    str2
    并逐个查找它们

        String str1 = "1,3,5,7,9,11,12,14";
        String str2 = "12,3,14,";       
        String s[] = str2.split(",");
    
        for (String str : s) {
            if(str != "" && str1.contains(str))
                System.out.println(str+ " found!");
        }
    

    我想你想问的问题是:

    如何检查由逗号(,)分隔的字符串值组成的数组是否由另一个也由逗号(,)分隔的数组的所有值组成

    如果是这种情况,那么您就不能使用
    contains()
    方法,因为它有不同的用途

    只需定义自己的方法(例如:
    containsValues()
    here)。并定义合适的逻辑:

    import java.util.*;
    
    public class HelloWorld {
        public static void main(String[] args) {
            String str1 = "1,3,5,7,9,11,12,14";
            String str2 = "12,3,14,";
            if (containsValues(str1, str2)) {
                System.out.println("Found!");
            }
        }
    
        public static boolean containsValues(String str1, String str2) {
            String strArr1[] = str1.split(",");
            String strArr2[] = str2.split(",");
            return Arrays.asList(strArr1).containsAll(Arrays.asList(strArr2));
        }
    }
    
    输出

    找到了


    试着这样做:

    String stack = "1,3,5,7,9,11,12,14";
    String needle = "12,3,14,";
    
    return Arrays.asList(stack.split(","))
           .containsAll(Arrays.asList(needle.split(",", 0)));
    

    注意在
    String#split()
    中使用
    0
    ,以丢弃格式错误的
    指针中的空尾随子字符串

    ,您已经知道了。那么问题是什么?@MSach-在str2中,数字不是按顺序排列的。您必须使用
    split()
    ,拆分字符串,然后检查str2数组中的每个字符串是否存在于str1数组中array@TheLostMind谢谢,那个问题不清楚。通过您的澄清,我解释了他需要做什么。
    “12,3,14,”.split(“,”)
    结果数组
    [12,3,14,]
    ,因此
    containsAll
    将返回false。No@SashaSalauyou。我认为你错了<代码>拆分()
    不会创建空插槽。它只返回
    [12,3,14]
    。您可以执行一个简单的
    System.out.println(“12,3,14,”.split(“,”).length)以验证它。您将获得
    3
    的输出。
    String stack = "1,3,5,7,9,11,12,14";
    String needle = "12,3,14,";
    
    return Arrays.asList(stack.split(","))
           .containsAll(Arrays.asList(needle.split(",", 0)));