Back to "Stom stuk code...gegenereerde ordinals voor getallen (th,rd etc...)"

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

Stom stuk code...gegenereerde ordinals voor getallen (th,rd etc...)

Saturday, 03 July 2004

UPDATE: Mijn code hieronder heeft natuurlijk een fout (ik schreef het om de opmerkzame vaardigheden van de gemeenschap te testen;-)) hoe dan ook, Philip Reick reageerde met een geloofwaardigere versie:

Hmm.. mijn weddenschap is dat je kwam weer over het na het vergeten van het omdat je gooide het weg. Het zou het verkeerde resultaat voor inputs zoals "42," "123," "101," enz. Ik heb gedaan dat veel - Ik spaar code voor een of andere reden, zelfs als het onjuist is (zoals, de verkoper geleverd code, of het heeft een truc in), dan een jaar later vind ik het en moet het opnieuw te testen omdat ik niet opnemen waarom ik het opgeslagen. Nutteloze manier om dingen te redden, maar ik heb een paar slechte gewoontes.

Hier is er een die ik vaak gebruik (wel, min of meer - het is van de bovenkant van het hoofd, geen compiler hier)

privé statische string GetOrdinal(int-nummer) { int plaats = getal % 10; if( place > 3) "de" terug te geven;

// speciaal geval voor tieners int tiener = getal % 100; if(teen < 20 && tiener > 10) { "de" terug te geven; } if( place == 1) return "st"; if( place == 2) return "nd"; if( place ==3) return "rd"; "de" terug te geven;

OK, niet het meest complexe stuk code op de planeet, kwam het tegen bij het opnieuw installeren van mijn kapotte machine.Het lijkt me iets dat het Framework misschien heeft ingebouwd, maar ik kon het niet lokaliseren...Anyway, gegeven een integer, dit knipsel zal een tekenreeks met de juiste ordinaal.

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.