Y a-t-il une façon simple en c# pour créer des ordinaux pour un certain nombre ? Par exemple :
- 1 retourne 1er
- 2 retourne 2ème
- 3 retourne 3e
- .. .etc
Est-ce possible via `` ou y a-t-il toutes les fonctions disponibles pour ce faire ?
Y a-t-il une façon simple en c# pour créer des ordinaux pour un certain nombre ? Par exemple :
Est-ce possible via `` ou y a-t-il toutes les fonctions disponibles pour ce faire ?
Cette page vous donne une liste complète de toutes les commandes numériques règles de mise en forme:
http://msdn.microsoft.com/en-us/library/0c899ak8.aspx
Comme vous pouvez le voir, il n'y a rien sur les ordinaux, de sorte qu'il ne peut pas être fait avec de la Ficelle.Format. Cependant ce n'est pas vraiment difficile d'écrire une fonction pour le faire.
public static string AddOrdinal(int num)
{
if( num <= 0 ) return num.ToString();
switch(num % 100)
{
case 11:
case 12:
case 13:
return num + "th";
}
switch(num % 10)
{
case 1:
return num + "st";
case 2:
return num + "nd";
case 3:
return num + "rd";
default:
return num + "th";
}
}
Mise à jour: Techniquement Ordinaux n'existent pas pour <= 0, alors j'ai mis à jour le code ci-dessus. Également supprimé les redondant ToString() des méthodes.
A noter aussi, ce n'est pas internationalisé. Je n'ai aucune idée de ce que les ordinaux ressembler dans d'autres langues.
N’oubliez pas l’internationalisation !
Les solutions ici travaillent uniquement pour l’anglais. Les choses deviennent beaucoup plus complexes si vous avez besoin soutenir d’autres langues.
Par exemple, en espagnol « 1er » s’écrirait comme « 1.o », « 1 », « 1.os » ou « 1.as » selon si la chose vous comptez est masculin, féminin ou pluriel !
Donc, si votre logiciel doit prendre en charge différentes langues, essayez d’éviter les ordinaux.
Alors que je n’ai pas comparé cela encore, vous devriez être en mesure d’obtenir les meilleures performances en évitant toutes les instructions case conditionnelles.
Il s’agit de java, mais un port pour c# est trivial :
Remarque, la réduction des instructions conditionnelles et l’utilisation de la recherche tableau devraient accélérer les performances si générant beaucoup de nombres ordinaux dans une boucle serrée. Toutefois, je reconnais aussi que ce n’est pas aussi lisible que la solution de l’instruction case.
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.