En ce moment, je fais
for (char c = 'a'; c <= 'z'; c++) {
alphabet[c - 'a'] = c;
}
mais y a-t-il une meilleure façon de procéder ? Semblable à la fonction 'a' to 'z'
En ce moment, je fais
for (char c = 'a'; c <= 'z'; c++) {
alphabet[c - 'a'] = c;
}
mais y a-t-il une meilleure façon de procéder ? Semblable à la fonction 'a' to 'z'
Le présent getAlphabet
utilise une technique similaire à celle décrite dans la question pour générer des alphabets pour des langues arbitraires.
Définissez n'importe quelle langue comme une énumération, et appelez getAlphabet
.
char[] armenianAlphabet = getAlphabet(LocaleLanguage.ARMENIAN);
char[] russianAlphabet = getAlphabet(LocaleLanguage.RUSSIAN);
// get uppercase alphabet
char[] currentAlphabet = getAlphabet(true);
System.out.println(armenianAlphabet);
System.out.println(russianAlphabet);
System.out.println(currentAlphabet);
I/System.out :
I/System.out :
I/System.out : ABCDEFGHIJKLMNOPQRSTUVWXYZ
private char[] getAlphabet() {
return getAlphabet(false);
}
private char[] getAlphabet(boolean flagToUpperCase) {
Locale locale = getResources().getConfiguration().locale;
LocaleLanguage language = LocaleLanguage.getLocalLanguage(locale);
return getAlphabet(language, flagToUpperCase);
}
private char[] getAlphabet(LocaleLanguage localeLanguage, boolean flagToUpperCase) {
if (localeLanguage == null)
localeLanguage = LocaleLanguage.ENGLISH;
char firstLetter = localeLanguage.getFirstLetter();
char lastLetter = localeLanguage.getLastLetter();
int alphabetSize = lastLetter - firstLetter + 1;
char[] alphabet = new char[alphabetSize];
for (int index = 0; index < alphabetSize; index++) {
alphabet[index] = (char) (index + firstLetter);
}
if (flagToUpperCase) {
alphabet = new String(alphabet).toUpperCase().toCharArray();
}
return alphabet;
}
private enum LocaleLanguage {
ARMENIAN(new Locale("hy"), '', ''),
RUSSIAN(new Locale("ru"), '',''),
ENGLISH(new Locale("en"), 'a','z');
private final Locale mLocale;
private final char mFirstLetter;
private final char mLastLetter;
LocaleLanguage(Locale locale, char firstLetter, char lastLetter) {
this.mLocale = locale;
this.mFirstLetter = firstLetter;
this.mLastLetter = lastLetter;
}
public Locale getLocale() {
return mLocale;
}
public char getFirstLetter() {
return mFirstLetter;
}
public char getLastLetter() {
return mLastLetter;
}
public String getDisplayLanguage() {
return getLocale().getDisplayLanguage();
}
public String getDisplayLanguage(LocaleLanguage locale) {
return getLocale().getDisplayLanguage(locale.getLocale());
}
@Nullable
public static LocaleLanguage getLocalLanguage(Locale locale) {
if (locale == null)
return LocaleLanguage.ENGLISH;
for (LocaleLanguage localeLanguage : LocaleLanguage.values()) {
if (localeLanguage.getLocale().getLanguage().equals(locale.getLanguage()))
return localeLanguage;
}
return null;
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.