忽略Java中字符串的'contains'大小写

时间:2013-05-17 08:34:27

标签: java string

考虑:

public static void main(String[] args) {

    String s = "AbcD";

    System.out.println(s.contains("ABCD"));
    System.out.println(s.contains("AbcD"));
}

输出:

false
true

无论如何,我都希望结果在两种情况下都是真的。有可能吗?

6 个答案:

答案 0 :(得分:32)

在使用contains

之前,您需要将两个字符串转换为相同的大小写
s.toLowerCase().contains("ABCD".toLowerCase());

答案 1 :(得分:21)

您可以使用org.apache.commons.lang3.StringUtils.containsIgnoreCase(String, String)

StringUtils.containsIgnoreCase(s, "ABCD")返回true

Apache文档here

答案 2 :(得分:5)

并不是说它会特别有效,但您可以使用Pattern匹配器进行不区分大小写的匹配:

Pattern pattern = Pattern.compile(Pattern.quote(s), Pattern.CASE_INSENSITIVE);
pattern.matcher("ABCD").find();
pattern.matcher("AbcD").find();

另请注意,它不会神奇地解决区域设置问题,但它将以toLowercase(Locale)的方式处理它,与Pattern.UNICODE_CASE标志的结合,它可能能够一次处理所有区域设置

答案 3 :(得分:3)

使用“toLowercase”有助于:

System.out.println(s.toLowercase(Locale.US).contains("ABCD".toLowercase (Locale.US)));

(当然你也可以使用toUppercase)

答案 4 :(得分:2)

您可以使用toLowerCase执行此操作。像这样:

s.toLowerCase().contains("aBcd".toLowerCase());

答案 5 :(得分:1)

尝试以下方法。如果字符串匹配,它将返回0

System.out.println(s.compareToIgnoreCase("aBcD"));

它会正常工作。