Mam sytuację, w której muszę znaleźć indeks litery w alfabecie. W Pythonie mogłem użyć string.ascii_lowercase lub string.ascii_uppercase. Czy jest coś podobnego w Javie?

Oczywiście mogłem zrobić:

private static char[] alphabet = "abcdefghijklmnopqrstuvwxyz".toCharArray();

Ale po tylu Pythonach zastanawiam się, czy jest to gdzieś wbudowane.

8
Brendan Long 1 czerwiec 2011, 22:11
1
Jaki alfabet? Osoby anglojęzyczne często są zaskoczone, gdy dowiadują się o alfabetach innych niż angielski.
 – 
Thorbjørn Ravn Andersen
1 czerwiec 2011, 22:34
Właściwie nie używam go jako alfabetu, po prostu mam kilka „cyfr” w bazie 26 (która jest alfabetem łacińskim).
 – 
Brendan Long
1 czerwiec 2011, 22:37

2 odpowiedzi

Najlepsza odpowiedź

Indeks można uzyskać w następujący sposób:

char lowercaseLetter = ...
int index = lowercaseLetter - 'a';
10
ColinD 1 czerwiec 2011, 22:14
Dobry pomysł. Nie pomyślałem o tym.
 – 
Brendan Long
1 czerwiec 2011, 22:18

Chociaż wolałbym podejście ColinD, gdy tylko pasuje, chcę tylko wspomnieć, że Java faktycznie ma do tego jakiś rodzaj API. Pozwala na parsowanie liczb o podstawie do 36, które używają 10 cyfr z '0'-'9' i liter 'a'-'z' dla reszty zakresu (w obu przypadkach).

char letter = ...
int index = Character.digit( letter, 36 ) - 10;

I z powrotem

int index = ...
char ch = Character.forDigit( index + 10, 36 );

Jeśli rzeczywiście chcesz użyć tego do utworzenia lub przeanalizowania liczb radix 36, możesz użyć implementacji metod statycznych Integer.parseInt i Integer.toString, które przyjmują parametr radix.

2
x4u 1 czerwiec 2011, 23:11