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