Есть ли в ASP.NET строка стандартного формата для преобразования 1/2/3 / ... в 1/2/3/3 ...? - PullRequest
1 голос
/ 28 мая 2010

У меня есть целое число в базе данных Access, которое отображается в ASP.NET. Целое число представляет позицию, достигнутую участником в спортивном соревновании (1-е, 2-е, 3-е и т. Д.), И я хотел бы отобразить его со стандартным суффиксом, таким как «st», «nd», «rd», в зависимости от ситуации. , а не просто голое число.

Важным ограничением является то, что это относится к присваиванию, которое указывает, что код VB или C # не должен быть написан (фактически он инструктирует код, стоящий за файлами, полностью удаляться). В идеале я хотел бы использовать стандартную строку формата, если она доступна, в противном случае, возможно, пользовательскую строку (я не слишком много работал со строками формата, и это не достаточно высокий приоритет, чтобы выделять значительное время *, но мне очень любопытно о том, есть ли стандартная строка для этого).

(* Задание должно быть выполнено сегодня вечером, и я усвоил трудный путь, который я не могу позволить себе тратить на вещи, которые не получают оценки, даже если они меня сильно раздражают.)

Ответы [ 2 ]

3 голосов
/ 28 мая 2010

К сожалению, для этого нет стандартной строки формата. Но это не так сложно написать:

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;
}
0 голосов
/ 03 декабря 2013

Вы можете попробовать это

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