32

私は次のコード行を書いています:

String name1 = fname.getText().toString();
String name2 = sname.getText().toString();
aru = 0;

count1 = name1.length();
count2 = name2.length();
for (i = 0; i < count1; i++)
{  
    for (j = 0; j < count2; j++)
    { 
        if (name1.charAt(i)==name2.charAt(j))
            aru++;
    }
    if(aru!=0)
        aru++;
}

ケースを無視してCharacter2つのsを比較したいと思います。String単に使用するだけIgnoreCaseでは機能しません。「65」の値を追加ASCIIしても機能しません。どうすればよいですか?

4

6 に答える 6

57

Java APIのCharacterクラスには、使用できるさまざまな関数があります。

両側でcharを小文字に変換できます。

Character.toLowerCase(name1.charAt(i)) == Character.toLowerCase(name2.charAt(j))

文字が大文字か小文字かを確認するために使用できる方法もあります。

Character.isUpperCase('P')
Character.isLowerCase('P') 
于 2012-04-19T07:20:48.437 に答える
9

このように、使用する前に文字列の大文字と小文字を変更できます

String name1 = fname.getText().toString().toLowerCase(); 
String name2 = sname.getText().toString().toLowerCase();

その後、休止操作を続行します。

于 2012-04-19T07:10:53.810 に答える
3

文字/小文字/大文字を比較するときは、トルコ語 I の問題を考慮する必要があります。

String に変換し、toLowerCase をインバリアント カルチャで使用することをお勧めします (少なくともほとんどの場合)。

public final static Locale InvariantLocale = new Locale(Empty, Empty, Empty); str.toLowerCase(InvariantLocale)

同様の C# string.ToLower() および string.ToLowerInvariant() を参照してください。

注: String.equalsIgnoreCase を使用しないでください http://nikolajlindberg.blogspot.co.il/2008/03/beware-of-Java-comparing-turkish.html

于 2012-11-25T12:18:33.993 に答える
1

大文字と小文字を区別せずに 2 つの文字列の間の位置にある char を比較する汎用メソッド。

public static boolean isEqualIngoreCase(char one, char two){
    return Character.toLowerCase(one)==Character .toLowerCase(two);
}

public static boolean isEqualStringCharIgnoreCase(String one, String two, int position){
    char oneChar = one.charAt(position);
    char twoChar = two.charAt(position);
    return isEqualIngoreCase(oneChar, twoChar);
}

関数呼び出し

boolean isFirstCharEqual = isEqualStringCharIgnoreCase("abc", "ABC", 0)
于 2016-10-13T08:43:05.547 に答える