Y at-il une chaîne de format standard dans ASP.NET pour convertir 1/2/3 / ... au 1er / 2ème / 3ème ...?

StackOverflow https://stackoverflow.com/questions/2926445

Question

I possède un nombre entier dans une base de données d'accès qui est en cours d'affichage dans ASP.NET. L'entier représente la position obtenue par un concurrent dans un événement sportif (1er, 2e, 3e, etc.), et je voudrais l'afficher avec un suffixe standard comme « st », « e », « e », selon le cas , plutôt que juste un nombre nu.

Une limitation importante est que ceci est pour une mission qui précise qu'aucun VB ou C # code à écrire (en fait, il indique le code derrière les fichiers à supprimer entièrement). Idéalement, je voudrais utiliser une chaîne de format standard si elle est disponible, sinon peut-être une chaîne personnalisée (je ne l'ai pas travaillé avec des chaînes de format beaucoup, et ce n'est pas une priorité suffisamment élevée pour consacrer un temps significatif *, mais je suis très curieux de savoir s'il y a une chaîne standard pour cela).

(* L'affectation est ce soir en raison, et je l'ai appris à la dure que je ne peux pas se permettre de passer du temps sur des choses qui ne reçoivent pas les marques, même si elles me contrarient beaucoup.)

Était-ce utile?

La solution

Malheureusement, il n'y a aucune chaîne de format standard pour le faire. Mais ce n'est pas difficile d'écrire:

public static string ToOrdinal(this int i, string format)
{
   string suffix = "th";
   switch (i%100)
   {
       case 11:
       case 12:
       case 13:
          //deliberately empty
          break;
       default:
          switch (i%10)
          {
              case 1:
                  suffix = "st";
                  break;
              case 2:
                  suffix = "nd";
                  break;
              case 3:
                  suffix = "rd";
                  break;
           }
           break;
   }
   return i.ToString(format) + suffix;
}

Autres conseils

Vous pouvez essayer

public static string FormatOrdinalNumber(int number)
{
    if (number == 0) return "0";
    switch (number % 100)
    {
        case 11: 
        case 12: 
        case 13: 
        return number + "th";
    }
    switch (number % 10)
    {
        case 1: return number + "st";
        case 2: return number + "nd";
        case 3: return number + "rd";
    }
    return number + "th";
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top