0

我有一个字符串包含String s1="1 2 7 8"

现在假设我有两个字符串String s2="1 7 8"String s3="1 2 8"

因此,通过将这两个字符串与我的第一个字符串进行比较,它应该返回true

但是当我这样做时s1.contanis(s2)它返回false。

有没有其他简单的方法来比较这些类型的模式,而不是将每个模式分开并一一比较?

4

7 回答 7

5

这将完成检查是否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(" ")));
    }
}
于 2013-06-21T08:44:42.347 回答
1

s1 绝对不包含 s2。

你想做什么 ?如果需要比较实际值,拆分并转换为整数

于 2013-06-21T08:40:50.153 回答
1

包含对整个"1 7 8"字符串的检查,"1 2 7 8"因此它返回 false。

您应该使用 StringTokenizer 方法。

于 2013-06-21T08:41:29.487 回答
0

因为当您使用 s1.contains(s2) 时,它不会比较字符串中的单个字母,而是比较整个字符串。例如,如果 s1 的值为“2 1 7 8”,那么 s1.contains(s2) 将返回 true。

于 2013-06-21T08:41:49.423 回答
0

你可以做谷歌搜索“Java - 字符串匹配()方法”你会找到很多链接。其中之一是: http ://www.tutorialspoint.com/java/java_string_matches.htm

于 2013-06-21T08:46:34.397 回答
0

使用以下代码:

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);
 }
}
于 2013-06-21T08:46:42.883 回答
0

仅当 s1 完全包含 s2 时,该contains方法才返回 true。String换句话说

 String s1 = "hello world";
 s1.contains( "llo" );

会返回 true 但是

 s1.contains( "ll w" );

将返回错误。

您需要标记 s1 和 s2,然后检查 s1 元素是否包含所有 s2 元素。

于 2013-06-21T08:47:04.390 回答