如何在字符串java上同时使用ignorecase和startsWith

时间:2017-04-18 07:42:09

标签: java

我想在java中的字符串上同时使用startsWith()equalIgnoreCase。我怎么能这样做?

2 个答案:

答案 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)) {
  // ...
}