我有一个字符串包含String s1="1 2 7 8"
现在假设我有两个字符串String s2="1 7 8"和String s3="1 2 8"
因此,通过将这两个字符串与我的第一个字符串进行比较,它应该返回true。
但是当我这样做时s1.contanis(s2)
它返回false。
有没有其他简单的方法来比较这些类型的模式,而不是将每个模式分开并一一比较?
我有一个字符串包含String s1="1 2 7 8"
现在假设我有两个字符串String s2="1 7 8"和String s3="1 2 8"
因此,通过将这两个字符串与我的第一个字符串进行比较,它应该返回true。
但是当我这样做时s1.contanis(s2)
它返回false。
有没有其他简单的方法来比较这些类型的模式,而不是将每个模式分开并一一比较?
这将完成检查是否s1
包含所有元素的工作s2
(由空格分隔):
Arrays.asList(s1.split(" ")).containsAll(Arrays.asList(s2.split(" ")));
完整代码:
public class StringContainsNumbers {
public static void main(String[] args) {
final String s1 = "1 2 7 8";
final String s2 = "1 7 8";
final String s3 = "1 2 8";
System.out.println(stringContainsNumbers(s1, s2));
System.out.println(stringContainsNumbers(s1, s3));
}
private static boolean stringContainsNumbers(String s1, String s2) {
return Arrays.asList(s1.split(" ")).containsAll(Arrays.asList(s2.split(" ")));
}
}
s1 绝对不包含 s2。
你想做什么 ?如果需要比较实际值,拆分并转换为整数
包含对整个"1 7 8"
字符串的检查,"1 2 7 8"
因此它返回 false。
您应该使用 StringTokenizer 方法。
因为当您使用 s1.contains(s2) 时,它不会比较字符串中的单个字母,而是比较整个字符串。例如,如果 s1 的值为“2 1 7 8”,那么 s1.contains(s2) 将返回 true。
你可以做谷歌搜索“Java - 字符串匹配()方法”你会找到很多链接。其中之一是: http ://www.tutorialspoint.com/java/java_string_matches.htm
使用以下代码:
public class Main {
public static void main(String[] args) {
String one="1 7 8";
String two= "1 2 8";
List<String> fistList= Arrays.asList(one.split(" "));
List<String> secondList= Arrays.asList(two.split(" "));
boolean isContainAll=fistList.containsAll(secondList);
System.out.println(isContainAll);
}
}
仅当 s1 完全包含 s2 时,该contains
方法才返回 true。String
换句话说
String s1 = "hello world";
s1.contains( "llo" );
会返回 true 但是
s1.contains( "ll w" );
将返回错误。
您需要标记 s1 和 s2,然后检查 s1 元素是否包含所有 s2 元素。