Java:相当于C的strnicmp? (startsWith和ignoreCase)

时间:2010-04-08 19:47:38

标签: java string

 String string1 = "abCdefGhijklMnopQrstuvwYz";
 String string2 = "ABC";

我一直在使用string1.startsWith(string2),它会在上面的示例中返回false,但现在我需要忽略区分大小写,并且没有String.startsWithIgnoreCase()。

除了做

 string1.toLowerCase.startsWith(string2.toLowerCase());

是否有一种有效的方法来查看string1是否以不区分大小写的方式以string2开头?

5 个答案:

答案 0 :(得分:13)

regionMatches方法有一个区分大小写的参数。

答案 1 :(得分:7)

使用StringUtils库。

    StringUtils.startsWithIgnoreCase("abCdefGhijklMnopQrstuvwYz", "ABC"); // true

http://commons.apache.org/lang/api/org/apache/commons/lang/StringUtils.html#startsWithIgnoreCase%28java.lang.String,%20java.lang.String%29

答案 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;
    }

顺便问一下,你确定你需要效率吗?