我想使用string.startsWith()
方法但忽略大小写。
假设我有String
“Session”并且我startsWith
在“sEsSi”上使用,那么它应该返回true
。
我怎样才能做到这一点?
在测试之前使用toUpperCase()
或标准化您的字符串。toLowerCase()
一种选择是将它们都转换为小写或大写:
"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, 5)); // true
它检查needle
从索引0
到长度的区域是否5
存在于haystack
从索引0
到长度的开始5
。第一个参数是true
, 表示它将进行不区分大小写的匹配。
如果你是Regex的忠实粉丝,你可以这样做:
System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));
(?i)
嵌入式标志用于忽略大小写匹配。
我知道我迟到了,但是使用 Apache Commons Lang 3 中的 StringUtils.startsWithIgnoreCase() 怎么样?
例子 :
StringUtils.startsWithIgnoreCase(string, "start");
只需将以下依赖项添加到您的 pom.xml 文件中(假设您使用 Maven):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.11</version>
</dependency>
myString.toLowerCase().startsWith(starting.toLowerCase());
尝试这个,
String session = "Session";
if(session.toLowerCase().startsWith("sEsSi".toLowerCase()))
您可以使用someString.toUpperCase().startsWith(someOtherString.toUpperCase())
你总能做到
"Session".toLowerCase().startsWith("sEsSi".toLowerCase());