2つのCharSequence
sの2つの文字をどのように比較する必要がありますか?
これらは私の2つのCharSequence
sです:
CharSequence name1 = fname.getText();
CharSequence name2 = sname.getText();
私がこのように比較しようとすると:
if(name1[i] == name2[j])
..それは私にエラーを与えます。
_String name1 = editText1.getText().toString();
String name2 = editText2.getText().toString();
_
文字列内の特定のchar
sを比較するには、String
型からもchar charAt(int)
メソッドを使用できます。使用例は次のとおりです。
_if(name1.charAt(2) == name2.charAt(0)){
// Do your stuff
}
_
char charAt(int)
はゼロベースであるため、0が最初、1が2番目というように覚えておく必要があります。この例では、int
egersを単純な_==
_と比較するのと同じように、2つの文字を比較したことがわかります。
String
s全体の比較:
_// This returns true if Strings are equal:
name1.contentEquals(name2);
// This returns 0 if Strings are equal:
name1.compareTo(name2);
_
大文字と小文字を区別しないようにするには、両方のString
sでString
タイプtoLowerCase()
のメソッドを使用できます。
_name1.equalsIgnoreCase(name2);
_
または:
_name1.toLowerCase().contentEquals(name2.toLowerCase());
_
CharSequence.html#charAt(int) を使用して、指定した位置でchar
を取得します。次に、char
と==
を比較できます。
問題のコードに関しては、これは次のようになります
if(name1.charAt(i) == name2.charAt(j))
可能であれば、2つのStrings
を比較してください。
ChracterSequence
比較の代わりに、
String name1 = edtTextName1.getText().toString().trim();
String name2 = edtTextName2.getText().toString().trim();
if(name1.equals(name2))
{
Log.i("Result","True");
}
else
{
Log.i("Result","false");
}
これを試して:
String name1 = fname.getText().toString();
String name2 = sname.getText().toString();
if(name1.equals(name2)){/* do something */}
name1.toString().contentEquals(name2);
参考までに、Java 11なので、新しいメソッドがあります CharSequence.compare() 。2つのcharシーケンスが等しいかどうかを確認する場合は、次を使用できます。
CharSequence.compare(name1, name2) == 0;