ho bisogno di codificare un metodo che incrementa un valore stringa da AAA a Zzz con rotazione ciclica (prossimo valore dopo ZZZ è AAA)Incremento un valore da AAA a Zzz con rotazione ciclica
Ecco il mio codice:
public static string IncrementValue(string value) {
if (string.IsNullOrEmpty(value) || value.Length != 3) {
string msg = string.Format("Incorrect value ('{0}' is not between AAA and ZZZ)", value);
throw new ApplicationException(msg);
}
if (value == "ZZZ") {
return "AAA";
}
char pos1 = value[0];
char pos2 = value[1];
char pos3 = value[2];
bool incrementPos2 = false;
bool incrementPos1 = false;
if (pos3 == 'Z') {
pos3 = 'A';
incrementPos2 = true;
} else {
pos3++;
}
if (incrementPos2 && pos2 == 'Z') {
pos2 = 'A';
incrementPos1 = true;
} else {
if (incrementPos2) {
if (pos2 == 'Z') {
pos2 = 'A';
incrementPos1 = true;
}
pos2++;
}
}
if (incrementPos1) {
pos1++;
}
return pos1.ToString() + pos2.ToString() + pos3.ToString();
}
So che questo pezzo di codice è piuttosto sporco e non molto efficiente, ma non so come farlo correttamente.
Come è protetto questo snippet? (questo verrà eseguito solo su windows plaform)
Come ottimizzare e rendere più leggibile?
Grazie per i vostri commenti
Perché non utilizzare base-26 numero? – kennytm
Hai davvero bisogno di un metodo di incremento o potresti ad es. un lavoro ripetitivo di iteratore infinito? –
@Matthew Stai suggerendo di creare una lista circolare contenente i valori AAA..ZZZ? Sarà una bella lista. – meagar