2009-06-22 12 views
21

Comment nous pouvons trouver le prochain caractère de l'entrée. Par exemple, si je saisis le caractère "b", comment puis-je obtenir la réponse "c"?Comment trouver le caractère suivant par ordre alphabétique?

+5

Quelle est la réponse si j'entre "ñ"? Et C"? Et 1"? Et "."? (Question connexe: Y a-t-il des restrictions dans l'entrée?) –

Répondre

29

Essayez ceci:

char letter = 'c'; 

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

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

De cette façon, vous avez aucun problème lorsque le caractère est le dernier de l'alphabet.

+2

Attendez - remplacez le '+ 1' par '+ 13' et vous obtenez ...? – Treb

13

Que diriez-vous:

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

qu'est-ce que cela renvoie pour 'z'? –

+1

Cela ne fonctionnera sûrement PAS. J'essayais d'être simpliste en ne ajoutant pas de code de validation. Mais en voyant les commentaires à remettre en question, je pense que je n'aurais pas dû répondre. Devrais-je supprimer ma réponse? – Hemant

+0

si premier char = 'z', ce code donnera le caractère suivant qui est '{', donc pas dans l'alphabet. – rogeriopvl

2

Peut-être la façon la plus simple est une petite fonction et un tableau des 26 caractères. Ensuite, vous pouvez décider de ce que vous voulez retourner pour 'z'.

+0

Bien sûr, ce n'est peut-être pas ce que la question des devoirs devient ... –

1

Convertissez le caractère en nombre, incrémentez le nombre, puis convertissez à nouveau. Mais considérons ce qui se passera pour "z" ou "á" (Latin Small Leter A avec Aigu).

0

besoin d'ajouter 1 en caractère, vous obtenez le caractère suivant. Fonctionne sur les valeurs ASCII.

+3

... jusqu'à 'y'. –

0

Comment ä trier? En allemand (je pense) il devrait trier après un, mais en suédois il devrait venir après å, qui à son tour est après z. Ce n'est pas une question triviale, sauf si vous vous limitez à l'anglais.

+0

Lol.En Allemagne, nous appelons l'alphabeth dans le même ordre qu'en anglais. Les lettres supplémentaires ü, ö et ä sont hors de toute position. Hah n'a jamais pensé à ça. Pourquoi diable n'y a t-il pas une place pour ces 3 lettres O. – C4u

5

Notez qu'un caractère sera implicitement converti en int. Voici une solution simplifiée:

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

Cette valeur de changement utile BOF application Excel pour trouver la colonne précédente

public static string PrevExecelColumn (string s) { s = s.ToUpper(); char [] ac = s.ToCharArray(); int ln = ac.Longueur; pour (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; 
    } 
Questions connexes