Back to "Parte tonta del código...generar ordinales para los números (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

Parte tonta del código...generar ordinales para los números (th,rd etc...)

Saturday, 03 July 2004

ACTUALIZACIÓN: Mi código de abajo, por supuesto, tiene un error (lo escribí para probar las habilidades perceptivas de la comunidad ;-)) de todos modos, Philip Reick comentó con una versión más creíble:

Hmm .. mi apuesta es que usted lo encontró de nuevo después de olvidarlo porque lo tiró a la basura. Devolvería el resultado incorrecto para entradas como "42", "123", "101", etc. He hecho mucho - guardo código por alguna razón incluso cuando es incorrecto (como, es el código suministrado por el vendedor, o tiene algún truco en él), luego un año más tarde lo encuentro y tengo que probarlo todo de nuevo porque no grabé POR QUÉ lo guardé. Inútil manera de guardar las cosas, pero tengo algunos malos hábitos.

Aquí hay uno que uso a menudo (bueno, sorta - está fuera de la parte superior de la cabeza, no hay compilador aquí)

cadena estática privada GetOrdinal(número de int) { lugar = número % 10; i( lugar) > 3) devolver "th";

// Caso especial para adolescentes adolescente = número % 100; i(doce) < 20 & & adolescente > 10) { devolver "th"; } if( lugar ==1) devuelve "st"; if( lugar ==2) devuelve "nd"; if( lugar ==3) devuelve "rd"; devolver "th";

OK, no es la pieza de código más compleja del planeta, se encontró con ella al reinstalar mi máquina rota.Me parece como algo que el Framework puede haber incorporado, pero no pude localizarlo... De todos modos, dado un entero, este fragmento devolverá una cadena con el ordinal correcto.

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.