java - 字符串包含 - 忽略大小写

标签 java string contains case-insensitive

是否可以确定字符串 str1="ABCDEFGHIJKLMNOP" 是否包含字符串模式 strptrn="gHi"?我想知道当字符不区分大小写时这是否可能。如果有,怎么做?

最佳答案

你可以使用

org.apache.commons.lang3.StringUtils.containsIgnoreCase(CharSequence str,
                                     CharSequence searchStr);

Checks if CharSequence contains a search CharSequence irrespective of case, handling null. Case-insensitivity is defined as by String.equalsIgnoreCase(String).

A null CharSequence will return false.

这个会比正则表达式更好,因为正则表达式在性能方面总是很昂贵

官方文档引用:StringUtils.containsIgnoreCase

更新:

如果你是其中的一员

  • 不想使用 Apache 公共(public)库
  • 不想使用昂贵的基于 regex/Pattern 的解决方案,
  • 不想使用 toLowerCase 创建额外的字符串对象,

您可以使用 java.lang.String.regionMatches 实现您自己的自定义 containsIgnoreCase

public boolean regionMatches(boolean ignoreCase,
                             int toffset,
                             String other,
                             int ooffset,
                             int len)

ignoreCase : 如果为真,则在比较字符时忽略大小写。

public static boolean containsIgnoreCase(String str, String searchStr)     {
    if(str == null || searchStr == null) return false;

    final int length = searchStr.length();
    if (length == 0)
        return true;

    for (int i = str.length() - length; i >= 0; i--) {
        if (str.regionMatches(true, i, searchStr, 0, length))
            return true;
    }
    return false;
}

关于java - 字符串包含 - 忽略大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14018478/

相关文章:

java - 二维数组列表

string - 在 Scala 中高效地重复字符/字符串 n 次

java - contains() 匹配两个字符串的问题

C# 检查 DataGridView 是否包含特定的单词

java - Elastic Java 客户端从 HTTP API 返回不同的结果

Java 参数中的引用类型

java - 未找到 hibernate.properties

java - 将字节数组作为 unicode 字符附加到字符串并显示它并将该字符串写回文件

c - c中字符串数组的内存泄漏

python - 查找列中的关键字并将这些关键字添加到同一行的新列中