2012-02-04 19 views
9

¿Cómo debo comparar dos caracteres de dos CharSequence s?Cómo comparar caracteres en dos CharSequences

Estos son mis dos CharSequence s:

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

Si trato de comparar de esta manera:

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

..se me da errores.

Respuesta

4
String name1 = editText1.getText().toString(); 
String name2 = editText2.getText().toString(); 

Para comparar particul ar char s en su Cadena, puede usar el método char charAt(int) también del tipo String. Aquí es ejemplo el uso:

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

Hay que recordar que char charAt(int) es cero basada en lo que 0 es primero, es 1 segundo y así sucesivamente. Y en este ejemplo puede ver que comparé dos caracteres al igual que compararía int egers - con simple ==.

La comparación de enteros String s:

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

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

para que sea sensible a mayúsculas puede utilizar el método de String tipo toLowerCase() en ambos String s.

name1.equalsIgnoreCase(name2); 

o:

name1.toLowerCase().contentEquals(name2.toLowerCase()); 
+2

charAt() se define en CharSequence, y sería menos eficiente convertirlos a cadenas primero - quizás ni siquiera sea posible (no hay restricción en CharSequence para sugerir que todos los caracteres que contiene deben poder caber en la memoria). – Jules

+0

Respondo en segundo lugar @Jules. Si va a comparar CharSequences, debe implementar algo similar a java.util.Arrays.equals (char [], ch ar []) y guárdelos como CharSecuencias y use charAt donde vea acceso a la matriz. http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Arrays.java#Arrays.equals%28char%5B%5D%2Cchar%5B% 5D% 29 – LINEMAN78

5

Si es posible comparar dos Strings,

En lugar de ChracterSequence comparación algo como,

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"); 
} 
+0

Un CharSequence es una secuencia de caracteres legibles. Esta interfaz proporciona acceso uniforme y de solo lectura a muchos tipos diferentes de secuencias de caracteres. Entonces, si tiene que comparar estos dos, tiene que pasar por cada carácter de esa secuencia usando un bucle, entonces es mejor cambiarlo en una secuencia y luego compararlo. – user370305

+0

¿cómo lo hago? –

+0

¿Qué significa eso? – user370305

4

Prueba esto:

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

No estoy usando cadenas ni puede pasar CharSequence a una cadena. ¿Cómo puedo leer CharSequence? Y también estoy comparando los personajes no toda la secuencia. –

+0

CharSequence es una interfaz, no una clase concreta. No puedes crear una instancia de CharSequence. Consulte la documentación aquí http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/CharSequence.html necesita una cadena (a la que puede acceder como una matriz si no desea utilizarla) el método equals incorporado, o un StringBuffer, porque esas son implementaciones reales concretas de CharSequence –

+0

Funciona, pero no puedo comparar caracteres particulares ... –

1
name1.toString.contentEquals(name2); 
6

Uso CharSequence.html#charAt(int) para obtener el char en una posición especificada. continuación, puede comparar con char==

En cuanto a su código en la cuestión, esto se traducirá en

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