我想在java中的字符串上同时使用startsWith()
和equalIgnoreCase
。我怎么能这样做?
答案 0 :(得分:3)
重点是:这两种方法都返回布尔结果。它们会为您提供有关您调用它们的字符串的是/否信息。所以你不能同时打电话给他们"同时"。你必须退后一步,重新思考你打算实现的目标......
所以,你看的内容可能是:
if ("someString".toLowerCase().startsWith("bla")) {
(并且只是为了记录:做这样的事情实际上是很好的做法;比如在询问用户输入时,你想要对待"是","是", " YE"都是一样的。
从这个意义上讲,调用toLowerCase()
可以被视为"规范化"踩上输入数据。
答案 1 :(得分:0)
GhostCat's answer对于您的用例可能很好,但是它对于大型测试字符串效率不高,因为toLowerCase()
将创建您要检查的字符串的副本,其中大多数你不在乎。
但是您根本不需要创建字符串的副本。 String
有一个称为regionMatches
的方法,它使您可以测试两个字符串的部分是否匹配,可以忽略大小写。 (实际上,这是在equalsIgnoreCase
中使用的)
if (input.regionMatches(true, 0, prefix, 0, prefix.length()))) {
// ...
}
如果要在多个地方进行此操作,我将编写一个简短的辅助方法来隐藏大多数参数,因此可以这样调用:
if (startsWithIgnoreCase(input, prefix)) {
// ...
}