Back to "Dumma kod...generera ordinaler för siffror (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

Dumma kod...generera ordinaler för siffror (th,rd etc...)

Saturday, 03 July 2004

UPPDATERING: Min kod nedan har naturligtvis ett fel (jag skrev den för att testa den uppfattningsförmåga samhället ;-) i alla fall, Philip Reick kommenterade med en mer trovärdig version:

Hmm.. min satsning är att du kom över det igen efter att ha glömt det eftersom du kastade bort det. Det skulle returnera fel resultat för ingångar som "42", "123, "101", etc. Jag har gjort det en hel del - Jag sparar kod av någon anledning även när det är felaktigt (som, dess säljaren levererade kod, eller det har något trick i det), sedan ett år senare hittar jag det och måste testa det igen eftersom jag inte spela in VARFÖR jag sparade det. Oanvändbart sätt att spara saker, men jag har några dåliga vanor.

Här är en jag använder ofta (ja, typ - det är från toppen av huvudet, ingen kompilator här)

privat statisk sträng Get Ordinal (int nummer) { Int-plats = antal % 10. om (plats) > 3) Återlämna "th".

// specialfall för tonåringar Int tonår = antal % 100. om (t.ex. < 20 & tonåring > 10) { Återlämna "th". } Om( plats = = = 1) returnera "st". Om( plats = = 2) returnera "nd". Om( plats = = 3) returnera "rd". Återlämna "th".

OK, inte den mest komplexa kodbiten på planeten, kom över det när ominstallera min trasiga maskin.Det verkar mig som något ramverket kan ha byggt in, men jag kunde inte hitta det...Hur som helst, med tanke på ett heltal, kommer denna snippet returnera en sträng med rätt ordinal.

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.