当前位置: 首页 > 知识库问答 >
问题:

如何检查一个字符串的字符是否在另一个字符串中

康言
2023-03-14

例如:

字符串1=helloworld字符串2=asdfuvjerhelloworld

这应该是真的。

另一个例子:字符串1=helloworld字符串2=lshewodxzr

这也应该是真的。

所以我正在研究如何创建一个方法,它将返回一个布尔值,检查第二个字符串是否包含第一个字符串中的字母。在第二个示例中,string2只有一次字母l,尽管字母l在string1中出现了三次,但仍然返回true。同样在第二个示例中,string2的字母不在string1中,但仍然返回true。

任何关于如何编写代码的帮助都将不胜感激!

共有3个答案

邢杰
2023-03-14

实际上我找到了一个更简单的方法,但把我的旧答案留作参考。这也应该是最有效的方法,而且它仍在使用Java 8:

public boolean containsAllChars(String a, String b) {
    List<Character> aChars = stringToCharacterList(a);
    List<Character> bChars = stringToCharacterList(b);
    return bChars.containsAll(aChars);
}

public List<Character> stringToCharacterList(String input) {
    return input.chars().distinct()
            .mapToObj(i -> (char)i)
            .collect(Collectors.toList());
}

它从两个字符串中获取不同字符的列表,然后检查第一个字符串的所有字符是否都包含在第二个字符串中。

邵轶
2023-03-14

通过使用Java 8,我可以做到以下几点:

public boolean check(final String firstString, final String secondString) {
    //Create a map mapping all characters from the firstString to true/false
    Map<Character, Boolean> map = IntStream.rangeClosed('a', 'z')
            .boxed()
            .collect(Collectors.toMap(
                    i -> (char)(int)i,
                    i -> firstString.chars().anyMatch(j -> j == i)
            ));

    return map.entrySet().stream()
            .filter(entry -> entry.getValue() == true)
            .map(Map.Entry::getKey)
            .allMatch(ch -> secondString.chars().anyMatch(i -> i == ch));
}

解释:

  • 首先创建一个映射

楚嘉
2023-03-14

我相信这个解决方法是正确的。如果我正确理解了你的要求。

这是使用Java8。

public static void main(String[] args) {
    String a = "helloworld";
    String b = "lshewodxzr";

    containsAllChars(a, b);
    containsAllChars(b, a);
}

private static void containsAllChars(String a, String b) {
    boolean result = a.chars().distinct().allMatch(ch -> b.contains(String.valueOf((char) ch)));
    System.out.println(result);
}

输出:

true
false
 类似资料:
  • 问题内容: 在代码中检查的子字符串是: 但是我该如何在Swift中做到这一点? 问题答案: 您可以使用Swift进行完全相同的调用: Swift 4和Swift 5 在Swift 4中,String是值的集合,在Swift 2和3中并不是这样,因此您可以使用以下更简洁的代码1: 迅捷3.0+ 较早的斯威夫特 我希望这是一个有用的解决方案,因为包括我在内的某些人通过致电遇到了一些奇怪的问题。1个 P

  • 在中,检查中的子字符串的代码是: 但我如何在Swift中做到这一点呢?

  • 问题内容: 如何在JavaScript中编写等效于C#的代码? 注意:这是一个古老的问题,正如评论中指出的ECMAScript2015(ES6)引入了该方法。但是,在撰写此更新(2015)时,浏览器支持还远远没有完成。 问题答案: 你可以使用方法,但并非所有浏览器都支持该方法。你可能需要使用填充程序/填充来将其添加到不支持它的浏览器中。创建一个符合规范中所有细节的实现有点复杂。如果你想要忠实的垫片

  • 问题内容: 如何检查数组中的任何字符串是否在另一个字符串中? 喜欢: 该代码行不通,只是为了展示我想要实现的目标。 问题答案: 你可以使用: 同样,要检查是否找到了列表中的所有字符串,请使用all代替any。

  • 本文向大家介绍如何检查Python的另一个字符串中是否存在多个字符串?,包括了如何检查Python的另一个字符串中是否存在多个字符串?的使用技巧和注意事项,需要的朋友参考一下 要检查数组中的任何字符串是否在另一个字符串中,可以使用any函数。  示例 输出结果 这将为您提供输出: 示例 尽管有些夸张,但您也可以使用正则表达式来匹配数组。例如: 输出结果 这将为您提供输出:

  • 问题内容: if var is ‘stringone’ or ‘stringtwo’: dosomething() 这行不通!我有一个变量,当它是两个值中的一个时,我需要它执行某些操作,但它不会输入if语句。在Java中工作。如何用Python编写? 问题答案: 这不能满足您的期望: 它与: 始终为真,因为它被认为是“真”值。 有两种选择: 或者您可以编写单独的相等性测试, 不要使用,因为比较对象