在java中从字符串中查找字符串
我有一个字符串“1,3,5,7,9,11,12,14”,我想检查该字符串是否包含java中的“12,3,14” 我的代码:在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() 用逗号分隔第二个字符串 然后检查每个元素是否包含在源中 在代码中看不到任何问题
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)));