Ho un semplice compito java. Ho bisogno di determinare se una stringa inizia con la lettera da A a I. So che devo usare string.startsWith(); ma non voglio scrivere, if(string.startsWith("a"));
fino a me, sembra efficiente. Dovrei usare un ciclo di qualche tipo?Determina se la stringa inizia con le lettere dalla A alla I
risposta
if (string.charAt(0) >= 'A' && string.charAt(0) <= 'I')
{
}
dovrebbe farlo
Non hai bisogno di espressioni regolari per questo.
Prova questa, supponendo che si desidera maiuscolo solo:
char c = string.charAt(0);
if (c >= 'A' && c <= 'I') { ... }
se si vuole una soluzione regex tuttavia, è possibile utilizzare questo (ideone):
if (string.matches("^[A-I].*$")) { ... }
Ok, questo ha funzionato. ma cosa significa esattamente il ^, e. * $ significa? So che [a-i] significa a through i – Archey
intendo dire, sto chiedendo cosa significa^e. * $, E perché ne ho bisogno. Mi piace capire tutto, dato che non abbiamo ancora imparato questo nel mio corso di informatica, – Archey
@Archey. Il mezzo inizia con la stringa, il. indica qualsiasi carattere, * indica un numero qualsiasi di volte e $ è una fine riga. Quindi, fondamentalmente l'inizio della linea seguito da A-I seguito da qualsiasi carattere 0 o più volte fino alla fine della riga. –
Prova
string.charAt(0) >= 'a' && string.charAt(0) <= 'j'
char c=string.toLowerCase().charAt(0);
if(c >= 'a' && c <= 'i')
...
Questo rende è facile estrarlo come metodo:
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;
}
che è ALTAMENTE preferito a qualsiasi soluzione in linea. Per la vittoria, taggalo come finale in modo che java lo in-linea per te e ti offre prestazioni migliori di una soluzione in-linea codificata pure.
non dovresti essere in minuscolo l'intera stringa, controlla come ho risolto nel mio post, si, lo so; ottimizzazione prematura ;-) –
Hai ragione, copia anche il tutto. Finché è diviso in un metodo, potrebbe anche fare il passo per scomporlo nella sua stessa variabile. –
Che ne dici di questo per brevità?
if (0 <= "ABCDEFGHI".indexOf(string.charAt(0))) {
// string starts with a character between 'A' and 'I' inclusive
}
Il commento non corrisponde al codice ;-) –
@Roger; corretto :-) – rsp
Ragionevole, ora mettilo in un metodo e imposta i parametri A e I. –
se (string.toUpperCase(). CharAt (0)> = 'A' & & string.toUpperCase(). CharAt (0) < = 'I')
dovrebbe essere il più semplice versione ...
Maiuscolo? Minuscolo? O? –
Se devi abbinare caratteri maiuscoli e minuscoli, controlla il mio post. Mark Byers corrisponde solo a lettere maiuscole e abbiamo alcuni post che corrispondono a lettere minuscole, basta sceglierne uno (e aggiorna la tua domanda per chiarire quale è quello che vuoi). –