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

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

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

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

2 ответа

Решение

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

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

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

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";
}
Другие вопросы по тегам