Java:相当于C';什么是strnicmp?(StartWith和ignoreCase)
我一直在使用string1.startsWith(string2),在上面的示例中它将返回false,但现在我需要忽略大小写敏感度,并且没有String.StartWithIgnoreCase() 除了做Java:相当于C';什么是strnicmp?(StartWith和ignoreCase),java,string,Java,String,我一直在使用string1.startsWith(string2),在上面的示例中它将返回false,但现在我需要忽略大小写敏感度,并且没有String.StartWithIgnoreCase() 除了做 String string1 = "abCdefGhijklMnopQrstuvwYz"; String string2 = "ABC"; 是否有一种有效的方法可以查看string1是否以不区分大小写的方式以string2开头?公共静态布尔起始WithIgnoreCase(字符串s,字符
String string1 = "abCdefGhijklMnopQrstuvwYz";
String string2 = "ABC";
是否有一种有效的方法可以查看string1是否以不区分大小写的方式以string2开头?公共静态布尔起始WithIgnoreCase(字符串s,字符串w)
string1.toLowerCase.startsWith(string2.toLowerCase());
{
如果(w==null)
返回true;
如果(s==null | | s.length()这个怎么样:
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;
}
该方法具有区分大小写的参数。使用StringUtils库
string2.equalsIgnoreCase(string1.substring(0, string2.length())
我确定我需要它吗:不需要。但我将来可能需要它,在这种情况下,我想知道另一种选择。您的代码片段看起来像来自java2s(),请引用源代码,这不处理Unicode。当然,它是从链接中获取的。我可以引用原始链接,我还可以编写15个不同版本的链接,只是为了显示我能够做到:)但是为一个毫无用处的问题浪费这么多时间似乎太多了。那么JDK上的字符是unicode的,所以它应该处理unicode,在花时间搜索某个地方是否有一个简单的代码片段之前阅读文档。很酷,谢谢!我刚刚注意到似乎采取了这种方法。感谢匿名“-1”,不管是谁给的。我可能会指出,这不是一个特别有用的答案-我建议对您的答案进行更详细的扩展!抱歉,需要string1.length()>string2.length()&&string2.equalsIgnoreCase(string1.substring(0,string2.length())
才能使用correct@HamzehSoboh,正确(差不多)。谢谢你指出。我没有考虑到string1.substring(0,string2.length())
抛出IndexOutOfBoundsException
如果string1.length()
,但条件应该是string1.length()>=string2.length()
。
StringUtils.startsWithIgnoreCase("abCdefGhijklMnopQrstuvwYz", "ABC"); // true
string.toLowerCase().startsWith(string2.toLowerCase())