2010-05-28 13 views
1

J'ai un entier dans une base de données Access, qui est affichée dans ASP.NET. L'entier représente la position atteinte par un concurrent dans un événement sportif (1er, 2ème, 3ème, etc.), et je voudrais l'afficher avec un suffixe standard comme 'st', 'nd', 'rd' selon le cas , plutôt que juste un numéro nu.Existe-t-il une chaîne de formatage standard dans ASP.NET pour convertir 1/2/3/... en 1er/2ème/3ème ...?

Une limitation importante est que ceci est pour une affectation qui spécifie qu'aucun code VB ou C# ne doit être écrit (en fait, il demande au code derrière les fichiers d'être entièrement supprimé). Idéalement je voudrais utiliser une chaîne de format standard si disponible, sinon peut-être une chaîne personnalisée (je n'ai pas beaucoup travaillé avec les chaînes de format, et ce n'est pas assez prioritaire pour consacrer du temps significatif à *, mais je suis très curieux à savoir s'il existe 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.)

Répondre

3

Malheureusement, il n'y a pas de chaîne de format standard pour cela. 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; 
} 
+2

Oui, tout à fait facile d'écrire quand vous êtes autorisé à écrire du code ... voir des détails de question. –

0

Vous pouvez essayer cette

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"; 
}