Java:为什么没有String#containsIgnoreCase?

Java:为什么没有String#containsIgnoreCase?,java,Java,多年以来,我一直在想,为什么类字符串中没有方法containsIgnoreCase。我们有equals和equalsIgnoreCase,但只有包含,没有包含Signorecase。这有什么原因吗?确切的原因真的很难说。也许有人认为equals的使用频率将高于contains的使用频率,因此证明实现equalsIgnoreCase方法最为有用,但实现containsIgnoreCase并不是那么有用。无论如何,这很难确定。话虽如此,您确实可以根据原始的contains方法轻松地实现自己的方法,大

多年以来,我一直在想,为什么类
字符串
中没有方法
containsIgnoreCase
。我们有
equals
equalsIgnoreCase
,但只有
包含
,没有
包含Signorecase
。这有什么原因吗?

确切的原因真的很难说。也许有人认为
equals
的使用频率将高于
contains
的使用频率,因此证明实现
equalsIgnoreCase
方法最为有用,但实现
containsIgnoreCase
并不是那么有用。无论如何,这很难确定。话虽如此,您确实可以根据原始的
contains
方法轻松地实现自己的方法,大致如下:

String s1 = "HeLlO WoRlD";
String s2 = "llo worl";
System.out.println(s1.toLowerCase().contains(s2.toLowerCase()));  // true

String类中有两个方法,它们是IgnoreCase的潜在候选方法,如indexOf、lastIndexOf、startsWith、EndWith


但我认为,toUpperCasetoLowerCase有一天会使IgnoreCase方法过时,这可能就是原因。

你可以编写自己的方法来轻松完成。我认为这个问题无法合理地回答,除非有一个原始语言架构师碰巧是这样的。所有的IgnoreCase方法都可能被打破——“忽略大小写”的定义真的很微妙,特别是当你谈到更高级的Unicode时。使用ICU4J或类似的东西。在Java 5之前根本没有
字符串。contains
方法……Apache Commons已经涵盖了: