Есть ли в .NET простой способ получить «st», «nd», «rd» и «th» окончания для чисел? [Дубликат]

Откройте проект и нажмите Ctrl + Alt + Shift + S, чтобы открыть структуру проекта. Там, где находится местоположение JDK, проверьте Use embedded JDK (recommended).

65
задан Community 23 May 2017 в 12:26
поделиться

7 ответов

Нет, в Библиотеке базовых классов.NET нет никакой встроенной возможности.

56
ответ дан Scott Hanselman 23 May 2017 в 22:26
поделиться
else if (choice=='q')
{
    qtr++;

    switch (qtr)
    {
        case(2): strcpy(qtrs,"nd");break;
        case(3):
        {
           strcpy(qtrs,"rd");
           cout<<"End of First Half!!!";
           cout<<" hteam "<<"["<<hteam<<"] "<<hs;
           cout<<" vteam "<<" ["<<vteam;
           cout<<"] ";
           cout<<vs;dwn=1;yd=10;

           if (beginp=='H') team='V';
           else             team='H';
           break;
       }
       case(4): strcpy(qtrs,"th");break;
-3
ответ дан CodesInChaos 23 May 2017 в 12:26
поделиться

Вот версия Функции Microsoft SQL Server:

CREATE FUNCTION [Internal].[GetNumberAsOrdinalString]
(
    @num int
)
RETURNS nvarchar(max)
AS
BEGIN

    DECLARE @Suffix nvarchar(2);
    DECLARE @Ones int;  
    DECLARE @Tens int;

    SET @Ones = @num % 10;
    SET @Tens = FLOOR(@num / 10) % 10;

    IF @Tens = 1
    BEGIN
        SET @Suffix = 'th';
    END
    ELSE
    BEGIN

    SET @Suffix = 
        CASE @Ones
            WHEN 1 THEN 'st'
            WHEN 2 THEN 'nd'
            WHEN 3 THEN 'rd'
            ELSE 'th'
        END
    END

    RETURN CONVERT(nvarchar(max), @num) + @Suffix;
END
8
ответ дан nickf 23 May 2017 в 12:26
поделиться

Это - функция, которая намного более проста, чем Вы думаете. Хотя могла бы быть функция.NET, уже существующая для этого, следующая функция (записанный в PHP) делает задание. Не должно быть слишком трудно портировать его.

function ordinal($num) {
    $ones = $num % 10;
    $tens = floor($num / 10) % 10;
    if ($tens == 1) {
        $suff = "th";
    } else {
        switch ($ones) {
            case 1 : $suff = "st"; break;
            case 2 : $suff = "nd"; break;
            case 3 : $suff = "rd"; break;
            default : $suff = "th";
        }
    }
    return $num . $suff;
}
83
ответ дан nickf 23 May 2017 в 22:26
поделиться

@nickf: Вот функция PHP в C#:

public static string Ordinal(int number)
{
    string suffix = String.Empty;

    int ones = number % 10;
    int tens = (int)Math.Floor(number / 10M) % 10;

    if (tens == 1)
    {
        suffix = "th";
    }
    else
    {
        switch (ones)
        {
            case 1:
                suffix = "st";
                break;

            case 2:
                suffix = "nd";
                break;

            case 3:
                suffix = "rd";
                break;

            default:
                suffix = "th";
                break;
        }
    }
    return String.Format("{0}{1}", number, suffix);
}
55
ответ дан Scott Dorman 23 May 2017 в 22:26
поделиться

Я думаю, что порядковый суффикс трудно получить..., в основном необходимо записать функцию, которая использует переключатель, чтобы протестировать числа и добавить суффикс.

нет никакой причины языка для обеспечения этого внутренне, особенно когда это - конкретная локаль.

можно сделать немного лучше, чем та ссылка когда дело доходит до объема кода для записи, но необходимо кодировать функцию для этого...

-6
ответ дан Hugh Buchanan 23 May 2017 в 22:26
поделиться

Это было уже покрыто, но я не уверен, как связаться с ним. Вот отрывок кода:

    public static string Ordinal(this int number)
    {
        var ones = number % 10;
        var tens = Math.Floor (number / 10f) % 10;
        if (tens == 1)
        {
            return number + "th";
        }

        switch (ones)
        {
            case 1: return number + "st";
            case 2: return number + "nd";
            case 3: return number + "rd";
            default: return number + "th";
        }
    }

к вашему сведению: Это как дополнительный метод. Если Ваша версия.NET, меньше чем 3,5 просто удаляют это ключевое слово

[РЕДАКТИРОВАНИЕ]: Спасибо за указание, что это было неправильно, это - то, что Вы получаете для копии / вставляющий код :)

12
ответ дан mezoid 23 May 2017 в 22:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: