2017-01-20 11 views
1

В Swift, я могу сделать что-то вроде этого:Имеет ли Kotlin стандартный способ форматирования числа в качестве английского ординала?

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

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

, но я не вижу какой-либо способ сделать это так легко в Котлин. Есть ли такой способ, или мне придется использовать сторонние библиотеки или написать свои собственные?

+1

Ну, обычно трудно доказать, что чего-то не существует. :) Но я почти уверен, что в stdlib нет такой функции или что-то, что может быть немедленно адаптировано для нее. Более того, stdlib не содержит ничего специфического для локали, и вы должны на самом деле обратиться к стороннему программному обеспечению или реализовать свое собственное решение. – hotkey

+0

@hotkey Звучит как ответ на меня! – Supuhstar

+1

Хорошо, положил это как ответ. :) – hotkey

ответ

2

Ну, как правило, трудно доказать, что чего-то не существует. Но я никогда не сталкивался с какой-либо функцией в kotlin-stdlib, которая бы сделала это или может быть немедленно адаптирована для этого. Более того, kotlin-stdlib, похоже, не содержит каких-либо специфических для локали (что, конечно же, имеет порядковый номер).

Я думаю, вы должны фактически прибегнуть к некоторому стороннему программному обеспечению или реализовать собственное решение, которое может быть как-то просто, как это:

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

Кроме того, решение в Java: (here)

 Смежные вопросы

  • Нет связанных вопросов^_^