Get short ordinal representation of a number Tag(s): String/Number
import java.util.Locale; public class NumberUtils { private NumberUtils() { } /* * Ordinal (depends on the current locale) * French or english support */ public static String getOrdinal(int number) { if (Locale.getDefault().getLanguage().equals("fr")) { return NumberUtils.getOrdinalFr(number); } else { return NumberUtils.getOrdinalEn(number); } } public static String getOrdinalFr(int number) { if(number == 1 ) { return number + "ier"; } else { return number + "e"; } } public static String getOrdinalEn(int number) { int mod100 = number % 100; int mod10 = number % 10; if(mod10 == 1 && mod100 != 11) { return number + "st"; } else if(mod10 == 2 && mod100 != 12) { return number + "nd"; } else if(mod10 == 3 && mod100 != 13) { return number + "rd"; } else { return number + "th"; } } public static void main(String[] args) throws Exception{ int[] testCases = { 0, 1, 2, 3, 4, 5, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 100, 101, 102, 103, 104, 1000, 1001, 1002 }; for (int testCase : testCases) { System.out.println(NumberUtils.getOrdinal(testCase)); //System.out.println(NumberUtils.getOrdinalEn(testCase)); //System.out.println(NumberUtils.getOrdinalFr(testCase)); /* output (english) 0th 1st 2nd 3rd 4th 5th 10th 11th 12th 13th 14th 20th 21st 22nd ... */ } } }
mail_outline
Send comment, question or suggestion to howto@rgagnon.com
Send comment, question or suggestion to howto@rgagnon.com