如何检查如果字符串包含字符列表?(How do I check if a string contai

2019-07-18 09:37发布

如何检查是否字符列表是在字符串,例如“ABCDEFGH”我该如何检查,如果这些中的任何一个是一个字符串。

Answer 1:

使用正则表达式使用Java中检查str.matches(regex_here) 在Java正则表达式

例如:

    if("asdhAkldffl".matches(".*[ABCDEFGH].*"))
    {
        System.out.println("yes");
    }


Answer 2:

实现这一点的最彻底的方法是使用StringUtils.containsAny(字符串,字符串)

package com.sandbox;

import org.apache.commons.lang.StringUtils;
import org.junit.Test;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

public class SandboxTest {

    @Test
    public void testQuestionInput() {
        assertTrue(StringUtils.containsAny("39823839A983923", "ABCDEFGH"));
        assertTrue(StringUtils.containsAny("A", "ABCDEFGH"));
        assertTrue(StringUtils.containsAny("ABCDEFGH", "ABCDEFGH"));
        assertTrue(StringUtils.containsAny("AB", "ABCDEFGH"));
        assertFalse(StringUtils.containsAny("39823839983923", "ABCDEFGH"));
        assertFalse(StringUtils.containsAny("", "ABCDEFGH"));
    }

}

Maven的依赖关系:

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.5</version>
    </dependency>


Answer 3:

我认为这是一个新手的问题,所以我会给你easies方法我能想到的: 使用的indexOf复杂的版本包括正则表达式 ,如果你愿意,你可以试试。



Answer 4:

番石榴: CharMatcher.matchesAnyOf

private static final CharMatcher CHARACTERS = CharMatcher.anyOf("ABCDEFGH");
assertTrue(CHARACTERS.matchesAnyOf("39823839A983923"));


Answer 5:

这似乎是一个家庭作业的问题... -_-

您可以使用String.contains()函数。
例如:

"string".contains("a");
String str = "wasd";
str.contains("a");

但你需要为每个要检查每个字符调用一次。



Answer 6:

这就是它可以使用Pattern和Matcher来实现,

Pattern p = Pattern.compile("[^A-Za-z0-9 ]");
Matcher m = p.matcher(trString);
boolean hasSpecialChars = m.find();


Answer 7:

如果"ABCDEFGH"是一个字符串变量,正则表达式的解决方案是不好的。 如果字符串包含在正则表达式有特殊含义的任何字符,它不会工作。 相反,我建议:

    Set<Character> charsToTestFor = "ABCDEFGH".chars()
            .mapToObj(ch -> Character.valueOf((char) ch))
            .collect(Collectors.toSet());
    String stringToTest = "asdhAkldffl";
    boolean anyCharInString = stringToTest.chars()
            .anyMatch(ch -> charsToTestFor.contains(Character.valueOf((char) ch)));
    System.out.println("Does " + stringToTest + " contain any of " + charsToTestFor + "? " + anyCharInString);

随着琴弦asdhAkldfflABCDEFGH这个片段输出:

确实asdhAkldffl包含任何[A,B,C,d,E,F,G,H]的? 真正



文章来源: How do I check if a string contains a list of characters?