2010-05-28 2 views
1

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

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

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

ответ

3

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

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

Да, довольно легко писать, когда вы разрешили писать код ... см специфику вопроса. –

0

Вы могли бы попробовать это

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"; 
} 
Смежные вопросы