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
Ηλίθιο κομμάτι κώδικα... γονάτισε κανονικά για τους αριθμούς (th,rd κλπ...)
Saturday, 03 July 2004
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;
}
}
}