如何检查字符串是否包含字符列表?

fel*_*rés 8 java regex string char

如何检查字符列表是否在字符串中,例如"ABCDEFGH"如何检查其中任何一个是否在字符串中.

vis*_*aim 22

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

例如:

    if("asdhAkldffl".matches(".*[ABCDEFGH].*"))
    {
        System.out.println("yes");
    }
Run Code Online (Sandbox Code Playgroud)


Dan*_*lan 19

实现这一点最简洁的方法是使用StringUtils.containsAny(String,String)

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"));
    }

}
Run Code Online (Sandbox Code Playgroud)

Maven依赖:

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.5</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

  • @advocate可能是因为它没有构建到java中.您必须下载Apache Commons Lang才能获得它.http://commons.apache.org/proper/commons-lang/确保将其添加到类路径中. (2认同)
  • 这应该是公认的答案——它更简洁、更简单,并且在我的测试中使用预编译的 RegEx 验证 Windows 文件名的保留字符(例如 Pattern.compile(".*?[&lt;&gt;:\"/\\| ?*]+?.*")),StringUtils.containsAny 的执行速度提高了约 6 倍。 (2认同)