如何使用忽略大小写的 string.startsWith() 方法?

新手上路,请多包涵

我想使用 string.startsWith() 方法但忽略大小写。

假设我有 String “会话”并且我在“sEsSi”上使用 startsWith 然后它应该返回 true

我怎样才能做到这一点?

原文由 Sheetal Bhatewara 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 4.1k
2 个回答

使用 toUpperCase()toLowerCase() 在测试之前标准化您的字符串。

原文由 Nemesis 发布,翻译遵循 CC BY-SA 3.0 许可协议

一种选择是将它们都转换为小写或大写:

 "Session".toLowerCase().startsWith("sEsSi".toLowerCase());

这是错误的。请参阅:https://stackoverflow.com/a/15518878/14731


另一种选择是使用 String#regionMatches() 方法,该方法采用布尔参数,说明是否进行区分大小写的匹配。你可以像这样使用它:

 String haystack = "Session";
String needle = "sEsSi";
System.out.println(haystack.regionMatches(true, 0, needle, 0, needle.length()));  // true

It checks whether the region of needle from index 0 till length 5 is present in haystack starting from index 0 直到长度 5 或没有。第一个参数是 true ,意味着它将进行不区分大小写的匹配。


如果你是 Regex 的忠实粉丝,你可以这样做:

 System.out.println(haystack.matches("(?i)" + Pattern.quote(needle) + ".*"));

(?i) 嵌入标志用于忽略大小写匹配。

原文由 Rohit Jain 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题