我想使用startsWith()方法,String但忽略了这种情况.
假设我有String"Session"而我startsWith在"sEsSi"上使用它应该返回true.
Nem*_*sis 94
在测试之前使用toUpperCase()或toLowerCase()标准化字符串.
Roh*_*ain 82
一种选择是将它们都转换为小写或大写:
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用String#regionMatches()方法,它接受一个布尔参数,说明是否进行区分大小写的匹配.你可以像这样使用它:
String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, 5)); // true
Run Code Online (Sandbox Code Playgroud)
它检查的区域是否needle从指数0直到长度5是存在于haystack起始从索引0直到长度5或没有.第一个参数是true,意味着它将进行不区分大小写的匹配.
如果只有你是Regex的忠实粉丝,你可以这样做:
System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));
Run Code Online (Sandbox Code Playgroud)
(?i) 嵌入标志用于忽略大小写匹配.
Séb*_*mme 10
我知道我迟到了,但是如何使用 Apache Commons Lang 3 中的 StringUtils.startsWithIgnoreCase() 呢?
例子 :
StringUtils.startsWithIgnoreCase(string, "start");
Run Code Online (Sandbox Code Playgroud)
只需将以下依赖项添加到您的 pom.xml 文件(假设您使用 Maven):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)