web-dev-qa-db-ja.com

2つのCharSequencesの文字を比較する方法

2つのCharSequencesの2つの文字をどのように比較する必要がありますか?

これらは私の2つのCharSequencesです:

CharSequence name1 = fname.getText();
CharSequence name2 = sname.getText();

私がこのように比較しようとすると:

if(name1[i] == name2[j])

..それは私にエラーを与えます。

9
Arush Kamboj
_String name1 = editText1.getText().toString();
String name2 = editText2.getText().toString();
_

文字列内の特定のcharsを比較するには、String型からもchar charAt(int)メソッドを使用できます。使用例は次のとおりです。

_if(name1.charAt(2) == name2.charAt(0)){
   // Do your stuff
}
_

char charAt(int)はゼロベースであるため、0が最初、1が2番目というように覚えておく必要があります。この例では、integersを単純な_==_と比較するのと同じように、2つの文字を比較したことがわかります。

Strings全体の比較:

_// This returns true if Strings are equal:
name1.contentEquals(name2);    

// This returns 0 if Strings are equal:
name1.compareTo(name2);
_

大文字と小文字を区別しないようにするには、両方のStringsでStringタイプtoLowerCase()のメソッドを使用できます。

_name1.equalsIgnoreCase(name2);
_

または:

_name1.toLowerCase().contentEquals(name2.toLowerCase());
_
4
Marcin Milejski

CharSequence.html#charAt(int) を使用して、指定した位置でcharを取得します。次に、char==を比較できます。

問題のコードに関しては、これは次のようになります

if(name1.charAt(i) == name2.charAt(j))
6

可能であれば、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");
}
5
user370305

これを試して:

String name1 = fname.getText().toString();
String name2 = sname.getText().toString();
if(name1.equals(name2)){/* do something */}
name1.toString().contentEquals(name2);
1
Huang

参考までに、Java 11なので、新しいメソッドがあります CharSequence.compare() 。2つのcharシーケンスが等しいかどうかを確認する場合は、次を使用できます。

CharSequence.compare(name1, name2) == 0;
0
ZhekaKozlov