Давайте определим, что String "растет по алфавиту", когда:
- Каждая буква в алфавитном порядке больше предыдущей.
- Неважно, заглавная буква или нет.
Эти строки «растут в алфавитном порядке»:
- "абкде"
- "абфжз"
А это не:
- "abbcd"
- "абддз"
- "зба"
Предположим, что мы проверяем строки, содержащие только буквы. Проверить, "растет" ли строка, можно в Scala с помощью следующего кода:
val str = "aBgjz"
val growing = str.map(_.toLower).toSet.toList.sortWith( _ < _ ).mkString.equals(str.map(_.toLower))
Этот код работает хорошо, но только для английских букв. Для строк с польскими буквами результат неверен. В польском алфавите буквы расположены в следующем порядке:
a, ą, b, c, ć, d, e ...
поэтому для:
val str = "aąbćdgz"
результат должен быть «истинным». Итак, вопрос:
Как проверить в Scala, является ли заданная строка «растущей в алфавитном порядке» для данной локали?
val str = "aąbćdgz"
val locale_id = "pl_PL"
....
val growing = ......