如何使用'string.startsWith()'方法忽略大小写?

2022-08-31 08:14:36

我想使用方法,但忽略了这种情况。string.startsWith()

假设我有“会话”,我在“sEsSi”上使用,那么它应该返回。StringstartsWithtrue

我怎样才能做到这一点?


答案 1

在测试字符串之前,请使用 或 对其进行标准化。toUpperCase()toLowerCase()


答案 2

一种选择是将它们都转换为小写或大写:

"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
这是错误的。请参见: https://stackoverflow.com/a/15518878/14731

另一种选择是使用 String#regionMatches() 方法,该方法采用一个布尔参数,说明是否进行区分大小写的匹配。你可以这样使用它:

String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, needle.length()));  // true

它检查从索引到长度的区域是否存在从索引到长度的区域。第一个参数是 ,意味着它将执行不区分大小写的匹配。needle05haystack05true


如果你是正则表达式的忠实粉丝,你可以做这样的事情:

System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));

(?i)嵌入式标志用于忽略大小写匹配。