1

その特定の文字列の開始を別の文字列と比較する最良の方法は何ですか

例 :

  if("ABCD1234".startsWith("ABCD")){
        System.out.println("This is true ");
    }

    if("ABCD1234".substring(0,4).equalsIgnoreCase("ABCD")){
        System.out.println("This also true ");
    }

または、他の解決策はありますか?

4

8 に答える 8

5

startsWith()コードを読んでいる人にあなたの意図が明確になるので、これが最良の選択肢だと思います。大文字と小文字を区別しないようにする場合は、メソッドを呼び出す前に両方の値を同じ大文字と小文字に変換します。

String prefix = "ABCD";
prefix = prefix.toLowerCase();

if("ABCD1234".toLowerCase().startsWith(prefix)) {
    System.out.println("This is true ");
}

特に注意が必要な場合は、Localetoを渡すか、少なくとも両方の文字列でそれを呼び出して、コードが Turkey TesttoLowerCase()に合格することを確認してください。

于 2012-11-07T10:53:09.573 に答える
4

別の解決策は次のとおりです。

if (s.indexOf("ABCD") == 0) {
  ...
}

しかし、私はあなたの最初の選択を優先します。

于 2012-11-07T10:50:04.080 に答える
1

大文字と小文字を区別しない equals の場合はを使用するequalsIgnoreCase方がよい場合がありますが、部分文字列の前に長さを確認する必要があり、メモリ文字列プールに新しい文字列も作成されます。

それのような別の方法

    if("ABCD1234".substring(0,4).compareTo("ABCD")==0){
        System.out.println("This also true ");
    }
    if("ABCD1234".substring(0,4).compareToIgnoreCase("ABCD")==0){
        System.out.println("This also true ");
    }

しかし、ここではより良いオプションだと思いますstartsWithが、大文字と小文字の区別を確認してください。

于 2012-11-07T10:51:48.327 に答える
1

Apache Commons の StringUtils を使用できます。

StringUtils.startsWith("abcdef", "abc") = true
StringUtils.startsWith("ABCDEF", "abc") = false
StringUtils.startsWithIgnoreCase("ABCDEF", "abc") = true

http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html

于 2012-11-07T10:56:54.043 に答える
1

正直に言うと、まず「abcd」が「ABCD」に等しいか自問する必要があります。

そうでない場合は、最初のソリューションの方がはるかに優れていると思います。よりクリーンで読みやすいです

あなたの答えが「はい」の場合、明らかに、最初の解決策は使用できません

于 2012-11-07T10:57:54.320 に答える
1

私は2番目の選択肢を好みます:

if("ABCD1234".substring(0,4).equalsIgnoreCase("ABCD")){
        System.out.println("This also true ");

これで、文字列を小文字に変換することでさらに確認できます。

if(string.toLowerCase().startswith(string2))
于 2012-11-07T11:45:12.990 に答える
1

も可能:

"ABCD1234".matches("ABCD.*");

私の頭の中の他の多くのクレイジーなソリューション:) IMHO「最良の」方法は、最初の提案を使用することです。

于 2012-11-07T10:56:43.197 に答える
0

仕事用の Java アプリを作成する必要がある場合は、startsWithアプローチを使用します。

于 2012-11-07T10:50:53.360 に答える