2017-01-20 1 views
1

In Swift, kann ich so etwas tun:Hat Kotlin eine Standardmethode zum Formatieren einer Zahl als englische Ordinalzahl?

let ordinalFormatter = NumberFormatter() 
ordinalFormatter.numberStyle = .ordinal 

print(ordinalFormatter.string(from: NSNumber(value: 3))) // 3rd 

aber ich sehe keine Möglichkeit, dies in Kotlin so leicht zu tun. Gibt es einen solchen Weg, oder muss ich Bibliotheken von Drittanbietern verwenden oder eigene schreiben?

+1

Nun, Es ist normalerweise schwer zu beweisen, dass etwas nicht existiert. :) Aber ich bin mir fast sicher, dass es keine solche Funktion in stdlib gibt oder irgendetwas, das sofort dafür angepasst werden kann. Darüber hinaus enthält stdlib keine länderspezifischen Informationen und Sie sollten tatsächlich auf Software von Drittanbietern zurückgreifen oder Ihre eigene Lösung implementieren. – hotkey

+0

@hotkey Klingt wie eine Antwort auf mich! – Supuhstar

+1

Okay, dann gepostet als Antwort. :) – hotkey

Antwort

2

Nun, es ist normalerweise schwer zu beweisen, dass etwas nicht existiert. Aber ich habe noch nie eine Funktion in kotlin-stdlib gefunden, die dies tun würde oder sofort dafür angepasst werden könnte. Außerdem scheint kotlin-stdlib nichts Gebietsspezifisches zu enthalten (welche Zahl Ordnungszahlen sind sicher).

Ich denke, man tatsächlich bis zu einem gewissen Software von Drittanbietern zurückgreifen sollte, oder eine eigene Lösung implementieren, die etwas so Einfaches wie das sein könnte:

fun ordinalOf(i: Int) = "$i" + if (i % 100 in 11..13) "th" else when (i % 10) { 
    1 -> "st" 
    2 -> "nd" 
    3 -> "rd" 
    else -> "th" 
} 

Auch Lösungen in Java: (here)

Verwandte Themen