String string1 = "abCdefGhijklMnopQrstuvwYz";
String string2 = "ABC";
我一直在使用string1.startsWith(string2),它会在上面的示例中返回false,但现在我需要忽略区分大小写,并且没有String.startsWithIgnoreCase()。
除了做
string1.toLowerCase.startsWith(string2.toLowerCase());
是否有一种有效的方法来查看string1是否以不区分大小写的方式以string2开头?
答案 0 :(得分:13)
regionMatches
方法有一个区分大小写的参数。
答案 1 :(得分:7)
使用StringUtils库。
StringUtils.startsWithIgnoreCase("abCdefGhijklMnopQrstuvwYz", "ABC"); // true
答案 2 :(得分:3)
这个怎么样:
string2.equalsIgnoreCase(string1.substring(0, string2.length())
答案 3 :(得分:2)
string.toLowerCase().startsWith(string2.toLowerCase())
答案 4 :(得分:0)
public static boolean startsWithIgnoreCase(String s, String w)
{
if (w==null)
return true;
if (s==null || s.length()<w.length())
return false;
for (int i=0;i<w.length();i++)
{
char c1=s.charAt(i);
char c2=w.charAt(i);
if (c1!=c2)
{
if (c1<=127)
c1=Character.toLowerCase(c1);
if (c2<=127)
c2=Character.toLowerCase(c2);
if (c1!=c2)
return false;
}
}
return true;
}
顺便问一下,你确定你需要效率吗?