Ηλίθιο κομμάτι κώδικα... γονάτισε κανονικά για τους αριθμούς (th,rd κλπ...) (ελληνικά (Greek))

Ηλίθιο κομμάτι κώδικα... γονάτισε κανονικά για τους αριθμούς (th,rd κλπ...)

Saturday, 03 July 2004

//

2 minute read

UPDATE: Ο κώδικάς μου παρακάτω φυσικά έχει ένα σφάλμα (το έγραψα για να δοκιμάσω τις αντιληπτικές δεξιότητες της κοινότητας;-) ούτως ή άλλως, Philip Reick σχολίασε με μια πιο αξιόπιστη έκδοση:

Θα επιστρέψει το λάθος αποτέλεσμα για τις εισροές όπως "42," "123," "101," κ.λπ. Έχω κάνει ότι πολλά - αποθηκεύω τον κώδικα για κάποιο λόγο ακόμη και όταν είναι λάθος (όπως, ο πωλητής προμήθευε τον κώδικα, ή έχει κάποιο κόλπο σε αυτό), τότε ένα χρόνο αργότερα το βρίσκω και πρέπει να το δοκιμάσει ξανά, επειδή δεν το κατέγραψα γιατί το έσωσα. άχρηστος τρόπος για να σώσει τα πράγματα, αλλά έχω μερικές κακές συνήθειες.

Εδώ είναι ένα που χρησιμοποιώ συχνά (καλά, κατά κάποιον τρόπο - είναι από την κορυφή του κεφαλιού, κανένας μεταγλωττιστής εδώ)

ιδιωτική στατική συμβολοσειρά GetOrdinal (αριθμόςint) { θέση int = αριθμός % 10· if( Τόπος > 3) επιστροφή "th";

// ειδική περίπτωση για τους εφήβους int έφηβος = αριθμός % 100· if(teen < 20 && έφηβος > 10) { επιστροφή "th"· } εάν(place == 1) επιστρέφει "st"· εάν(place == 2) επιστρέφει "nd"· εάν(place == 3) επιστρέφει "rd"· επιστροφή "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;
            }
        }
    }
Finding related posts...
logo

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