2011-12-16 9 views
7

Tengo una simple tarea de java. Necesito determinar si una cadena comienza con la letra A hasta la I. Sé que tengo que usar string.startsWith(); pero no quiero escribir, if(string.startsWith("a")); hasta el final, parece eficiente. ¿Debería usar un bucle de algún tipo?Determinar si la cadena comienza con las letras A a I

+0

Mayúsculas? ¿Minúscula? ¿Ya sea? –

+0

Si necesita coincidir con mayúsculas y minúsculas, revise mi publicación. Mark Byers solo coincide con mayúsculas y tenemos algunas publicaciones que coinciden con letras minúsculas, simplemente elija una (y actualice su pregunta para aclarar cuál es la que desea). –

Respuesta

2
if (string.charAt(0) >= 'A' && string.charAt(0) <= 'I') 
{ 
} 

debe hacerlo

26

No es necesario expresiones regulares para esto.

probar esto, asumiendo que usted quiere mayúsculas solamente:

char c = string.charAt(0); 
if (c >= 'A' && c <= 'I') { ... } 

Si usted quiere una solución de expresiones regulares sin embargo, se puede utilizar este (ideone):

if (string.matches("^[A-I].*$")) { ... } 
+0

Bien, esto funcionó. pero ¿qué significa exactamente ^, y. * $ significa? Sé que [a-i] significa a través de – Archey

+0

quiero decir, estoy preguntando qué significa^y. * $, Y por qué lo necesito. Me gusta entender todo, ya que no hemos aprendido esto en mi clase de ciencias de la computación todavía – Archey

+2

@Archey El medio comienza de la cadena, el. significa cualquier carácter, * significa cualquier cantidad de veces y $ es el final de la línea. Entonces, básicamente comienza la línea seguida de A-I seguido de cualquier carácter 0 o más veces hasta el final de la línea. –

1

Trate

string.charAt(0) >= 'a' && string.charAt(0) <= 'j' 
1
char c=string.toLowerCase().charAt(0); 
if(c >= 'a' && c <= 'i') 
    ... 

Esto hace es fácil extraerlo como método:

public static boolean startsBetween(String s, char lowest, char highest) { 
    char c=s.charAt(0); 
    c=Character.toLowerCase(c); //thx refp 
    return c >= lowest && c <= highest; 
} 

que es MUY preferible a cualquier solución en línea. Para obtener el premio, márquelo como definitivo, de modo que java lo incorpore por usted y le proporcione un mejor rendimiento que una solución codificada en línea también.

+0

no debería estar bajando la cadena completa, mira cómo lo resolví en mi publicación, sí, lo sé; Optimización prematura ;-) –

+0

Tiene razón, también copia todo. Siempre que se divida en un método, podría dar el paso para dividirlo en su propia variable. –

2

¿Qué tal esto por brevedad?

if (0 <= "ABCDEFGHI".indexOf(string.charAt(0))) { 
    // string starts with a character between 'A' and 'I' inclusive 
} 
+2

El comentario no coincide con el código ;-) –

+0

@Roger; corregido :-) – rsp

+0

Razonable, ahora ponlo en un método y crea los parámetros A y I. –

0

si (string.toUpperCase(). CharAt (0)> = 'A' & & string.toUpperCase(). CharAt (0) = < 'I')

debe ser el más fácil versión ...

Cuestiones relacionadas