我想使用 string.startsWith()
方法但忽略大小写。
假设我有 String
“会话”并且我在“sEsSi”上使用 startsWith
然后它应该返回 true
我怎样才能做到这一点?
原文由 Sheetal Bhatewara 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想使用 string.startsWith()
方法但忽略大小写。
假设我有 String
“会话”并且我在“sEsSi”上使用 startsWith
然后它应该返回 true
我怎样才能做到这一点?
原文由 Sheetal Bhatewara 发布,翻译遵循 CC BY-SA 4.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 许可协议
8 回答6.4k 阅读
1 回答4.2k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
3 回答1.7k 阅读✓ 已解决
1 回答2k 阅读✓ 已解决
使用
toUpperCase()
或toLowerCase()
在测试之前标准化您的字符串。