UPDATE: Alla olevassa koodissani on tietysti virhe (kirjoitin sen testatakseni yhteisön havaintokykyä ;-) joka tapauksessa, Philip Reick kommentoi uskottavammalla versiolla:
Veikkaukseni on, että törmäsit siihen uudelleen sen jälkeen, kun unohdit sen, koska heitit sen pois. Se palauttaisi väärän tuloksen esimerkiksi "42", "123," "101", jne. Olen tehnyt niin paljon – säästän koodia jostain syystä, vaikka se olisi väärä (kuten sen myyjä toimitti koodin tai siinä on jotain temppua), sitten vuotta myöhemmin löydän sen ja joudun testaamaan sitä uudelleen, koska en tallentanut, miksi pelastin sen. Säästän sen turhaan, mutta minulla on muutamia huonoja tapoja.
Tässä on yksi, jota käytän usein (no, tavallaan - se on pois päältä, täällä ei ole kääntäjää)
yksityinen staattinen merkkijono GetOrdinal (int number) { Int place = lukumäärä % 10; if( paikka) > 3) palata "th";
//Teini-ikäisten erityistapaus int teini = luku % 100; jos(teini) < 20 && teini-vuotiaat > 10) { palauttaa "th"; } if (paikka 1) palauttaa "St"; Tekstityksen versionumero: 1.0 Päiväys: 21.05.2010 Suomennos: if (paikka 3) palaa "rd"; palauttaa "th";
OK, ei planeettamme monimutkaisin koodinpalanen, törmäsi siihen asentaessaan rikkinäistä konettani uudelleen.Se vaikuttaa minusta siltä, että Framework on saattanut rakentaa sen sisään, mutta en löytänyt sitä...Kuitenkin, kun otetaan huomioon kokonaisluku, tämä nappula palauttaa merkkijonon, jossa on oikea tapa.
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;
}
}
}
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.