131

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

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

我怎样才能做到这一点?

4

8 回答 8

106

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

于 2013-10-03T08:19:50.903 回答
97

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

"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)嵌入式标志用于忽略大小写匹配。

于 2013-10-03T08:18:29.027 回答
12

我知道我迟到了,但是使用 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>
于 2020-07-23T09:35:44.470 回答
0
myString.toLowerCase().startsWith(starting.toLowerCase());
于 2013-10-03T08:18:40.680 回答
0

尝试这个,

String session = "Session";
if(session.toLowerCase().startsWith("sEsSi".toLowerCase()))
于 2013-10-03T08:18:56.907 回答
-1

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

于 2013-10-03T08:19:11.683 回答
-2

StartsWith(String value, bool ignoreCase, CultureInfo?culture) 例如:

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

要点:在VS中通过右键StartsWith然后“pick definition”可以看到所有的重载方法

在此处输入图像描述

在此处输入图像描述

于 2021-07-28T05:05:03.017 回答
-3

你总能做到

"Session".toLowerCase().startsWith("sEsSi".toLowerCase());
于 2013-10-03T08:18:58.453 回答