Domanda

Ho un intero in un database di Access, che viene mostrato in ASP.NET. Il numero intero rappresenta la posizione raggiunta da un concorrente in un evento sportivo (1 °, 2 °, 3 °, ecc), e mi piacerebbe per visualizzarla con un suffisso standard come 'st', 'nd', 'RD' a seconda dei casi , piuttosto che solo un numero di nudo.

Una limitazione importante è che questo è per un incarico che specifica che nessun VB o C # codice essere scritti (in realtà si incarica codice dietro file da eliminare del tutto). Idealmente mi piacerebbe usare una stringa di formato standard, se disponibile, altrimenti forse una stringa personalizzata (non ho lavorato con stringhe di formato molto, e questo non è abbastanza alta priorità al tempo significativo dedicata a *, ma io sono molto curioso sul fatto che ci sia una stringa standard per questo).

(* L'assegnazione è dovuta questa sera, e ho imparato a mie spese che non posso permettermi di spendere tempo su cose che non ottengono i segni, anche se mi hanno irk in modo significativo.)

È stato utile?

Soluzione

Purtroppo, non v'è alcuna stringa di formato standard per fare questo. Ma non è così difficile da scrivere:

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

Altri suggerimenti

Si potrebbe provare questo

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";
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top