Back to "Тупий шматок коду... генерувати ordinals для чисел (th, d і т....)"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

Imported mostlylucidcouk

Тупий шматок коду... генерувати ordinals для чисел (th, d і т....)

Saturday, 03 July 2004

UPDATE: У моєму коді, наведеному нижче, є, звичайно ж, помилка (я написав її, щоб перевірити навички розпізнавання громади ; -) у будь- якому разі, Філіп Райк коментував з більш надійною версією:

Я впевнений, що після того, як ви забули про нього, ви знову натрапили на нього. Він поверне неправильний результат для вхідних даних на зразок " 42," "123," "101" тощо. Я зробив це з певної причини: зекономив код з певної причини, навіть якщо він неправильний (наприклад, для постачальника, який постачає код, або має певний трюк у ньому), то через рік я знайшов його і мушу перевірити його знову, тому що я не записував, чому я його зберіг. Некорисний спосіб збереження речей, але у мене є декілька поганих звичок.

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

приватний статичний рядок getOrgetal}int номер) { int місце = число% 10; if} місце > 3) повернути "th ";

/// Особливий регістр для підлітків int Unit = число % 100; if' teven < 20- і & підлітковий > 10) { return "th"; } if} place =1) return "st"; if} place == 2) return "nd"; if} place ==3) return "rd"; return "th";

Гаразд, не найскладніший фрагмент коду на планеті, натрапив на нього, коли возз'єднав мою поламану машину. Це вражає мене, як щось збудоване фреймом, але я не міг знайти його... будь-який шлях, за умови цілого, цей фрагмент поверне рядок з правильним ординалом.

THIS CODE IS INCORRECT! Retained for amusement purposes only :0(
public class OrdinalNumber
    {
        public static string  GetOrdinal(int Number) 
        {
        
            try
            {
                string numStr = Number.ToString();
                // Accepts an integer, returns the ordinal suffix
                //  special case three digit numbers ending
                // with 11, 12 or 13 - ie, 111th, 112th, 113th, 211th, et al
                if (numStr.Length > 2 ) 
                {
                    int intEndNum = Convert.ToInt32(numStr.Substring(numStr.Length - 2, 2));
                    if ( intEndNum >= 11 && intEndNum <= 13 ) return "th";
                        
                }
                if ( Number >= 21 && Number <=23) 
                {
                    //  21st, 22nd, 23rd, et al
                    switch (Convert.ToInt32(numStr.Substring(numStr.Length - 1, 1))) 
                    {
                        case 1: return "st";
                        case 2: return "nd";
                        case 3:    return "rd";
                        default: return "th";
                    }
                } 
                else if(Number >=1 && Number <=3)
                {
                    //  1st to 20th
                    switch (Number) 
                    {
                        case 1: return "st";
                        case 2:    return "nd";
                        case 3:    return "rd";
                        default: return "th";
                    }
                }
                else
                {
                    return "th";
                }
            }
            catch(Exception)
            {
                return string.Empty;
            }
        }
    }
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.