2009-06-22 10 views
21

Come possiamo scoprire il prossimo personaggio di quello inserito. Ad esempio, se inserisco il carattere "b", allora come ottengo la risposta "c"?Come trovare il prossimo carattere in ordine alfabetico?

+5

Qual è la risposta se inserisco "ñ"? E C"? E "1"? E "."? (Domanda correlata: ci sono restrizioni nell'input?) –

risposta

29

Prova questo:

char letter = 'c'; 

if (letter == 'z') 
    nextChar = 'a'; 
else if (letter == 'Z') 
    nextChar = 'A'; 

else 
    nextChar = (char)(((int)letter) + 1); 

In questo modo non avete problemi a quando il carattere è l'ultima dell'alfabeto.

+2

Aspetta - sostituisci il '+ 1' con '+ 13' e ottieni ...? – Treb

13

ne dite:

char first = 'c'; 
char nextChar = (char)((int) first + 1); 
+2

cosa restituisce per 'z'? –

+1

Questo sicuramente NON funzionerà. Stavo cercando di essere semplicistico non aggiungendo codice di validazione. Ma vedendo i commenti per la domanda, penso che non avrei dovuto rispondere. Dovrei cancellare la mia risposta? – Hemant

+0

se prima char = 'z', questo codice darà il char successivo che è '{', quindi non in alfabeto. – rogeriopvl

2

Forse il modo più semplice è un po 'la funzione e un array di 26 caratteri. Quindi puoi decidere cosa vuoi restituire per 'z'.

+0

Ovviamente, questa potrebbe non essere la domanda per i compiti a casa ... –

1

Convertire il carattere in un numero, incrementare il numero e quindi riconvertire.

Ma considera che cosa accadrà per "z" o "á" (Latino piccolo Leter A con acuto).

0

è necessario aggiungere solo 1 carattere per il prossimo carattere. Funziona su valori ASCII.

+3

... fino a "y". –

0

Come si fa? In tedesco (credo) dovrebbe ordinare dopo a, ma in svedese dovrebbe venire dopo å, che a sua volta è dopo z. Questa non è una domanda banale, a meno che non ti limiti all'inglese.

+0

Lol.In germania chiamiamo l'alphabeth nello stesso ordine che in inglese. Le lettere extra ü, ö e ä sono fuori posizione. Hah non ci ha mai pensato. Perché diavolo non c'è un posto per queste 3 lettere O.o. – C4u

5

Si noti che un carattere verrà convertito implicitamente in un int. Ecco una soluzione semplificata:

char incrementCharacter(char input) 
{ 
    return (input == 'z'? 'a': (char)(input + 1)); 
} 
0

questo cambiamento valore utile fro applicazione Excel per trovare colonna precedente

stringa statica pubblica PrevExecelColumn (string s) { s = s.ToUpper(); char [] ac = s.ToCharArray(); int ln = ac.Length; per (int i = ln - 1; i> -1; i--) { char c = ac [i];

  if (c == 'A') 
      { 
       ac[i] = 'Z'; 
       continue; 
      } 

      ac[i] = (char)(((int)ac[i]) - 1); 
      break; 

     } 
     s = new string(ac); 
     return s; 
    } 
Problemi correlati