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

我想使用 string.startsWith()方法,但是忽略了大小写。

假设我有 String“ Session”并且在“ sEsSi”上使用 startsWith,那么它应该返回 true

我怎么才能做到呢?

121833 次浏览

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

"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

检测从 05长度的 needle区域是否存在于 haystack中,从 05长度的 needle区域是否存在于 haystack中。第一个参数是 true,这意味着它将执行不区分大小写的匹配。


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

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

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

myString.toLowerCase().startsWith(starting.toLowerCase());

试试这个,

String session = "Session";
if(session.toLowerCase().startsWith("sEsSi".toLowerCase()))

你随时都可以

"Session".toLowerCase().startsWith("sEsSi".toLowerCase());

你可以使用 someString.toUpperCase().startsWith(someOtherString.toUpperCase())

在测试之前使用 toUpperCase()或者 toLowerCase()来标准化你的字符串。

我知道我迟到了,但是从 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>

StartsWith (字符串值,bool IgnoreCase,CultureInfo? 文化) 例如:

string test = "Session";
bool result = test.StartsWith("sEsSi", true, null);
Console.WriteLine(result);

点: 在 VS 中,右键单击 StartsWith,然后“选择定义”可以看到所有重载方法

enter image description here

enter image description here