Есть ли в 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";
}