2

"contains""equalignorecase"文字列の機能を同時に使用できますか。

文字列を検索する必要があるデータがあり"NBN"ました。見つかった場合は、フラグを更新する必要があります。しかし、私はそこにいるのを見ています

"nBN","nBn","NBn","nbN","NbN","Nbn"

データのセットにも存在します。だから私は複数の組み合わせと比較を得ています。

一度に両方の関数を使用して、これらの多くの比較を克服する方法はありますか?

4

5 に答える 5

5

Apache StringUtils#containsIgnoreCase()を使用できます

 StringUtils.containsIgnoreCase("WholeString", "NBn");
于 2013-10-09T04:58:14.190 に答える
4

String#toLowerCase代わりに使いやすいと思うかもしれませんString#equalsIgnoreCase

例えば...

if ("I want my NBN".toLowerCase().contains("nbn")) {...}
于 2013-10-09T04:59:28.763 に答える
2

これには組み込みの機能はありませんが、ベスト プラクティスは、両方の文字列を小文字に変換してから、contains() を使用することです。

String matchString = "NPN";
String lowercaseMatchString = matchString.toLowerCase();
String lowercase = stringToTest.toLowerCase();

return lowercaseMatchString.contains(lowercase);
于 2013-10-09T05:00:23.817 に答える
0

データに「NBN」が含まれているかどうかを確認したいだけの場合は、 StringUtils.containsIgnoreCase() が最適なオプションです。正確な目的を果たすためです。ただし、発生数などもカウントしたい場合は、カスタム ソリューションを作成することをお勧めします。

于 2013-10-09T07:06:45.593 に答える
0

Apache Commons
http://commons.apache.org/proper/commons-lang/apidocs/src-html/org/apache/commons/lang3/StringUtils.htmlから:

1337    public static boolean containsIgnoreCase(final CharSequence str, final CharSequence searchStr) {
1338        if (str == null || searchStr == null) {
1339            return false;
1340        }
1341        final int len = searchStr.length();
1342        final int max = str.length() - len;
1343        for (int i = 0; i <= max; i++) {
1344            if (CharSequenceUtils.regionMatches(str, true, i, searchStr, 0, len)) {
1345                return true;
1346            }
1347        }
1348        return false;
1349    }

http://commons.apache.org/proper/commons-lang/javadocs/api-3.0/src-html/org/apache/commons/lang3/CharSequenceUtils.html

187        static boolean regionMatches(CharSequence cs, boolean ignoreCase, int thisStart,
188                CharSequence substring, int start, int length)    {
189            if (cs instanceof String && substring instanceof String) {
190                return ((String) cs).regionMatches(ignoreCase, thisStart, ((String) substring), start, length);
191            } else {
192                // TODO: Implement rather than convert to String
193                return cs.toString().regionMatches(ignoreCase, thisStart, substring.toString(), start, length);
194            }
195        }
于 2013-10-09T05:09:41.797 に答える