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

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

Вопрос

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

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

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

Это было полезно?

Решение

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

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";
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top