Сбой BreakIterator на Unicode UCD LineBreakTest - PullRequest
0 голосов
/ 19 февраля 2019

Консорциум Unicode предоставляет файл LineBreakTest для проверки правильности работы кода разрыва строки.Используя собственную библиотеку Unicode icu4j, я не могу пройти тестовый пример × [0.3] HYPHEN-MINUS (HY) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3].Это работает со встроенной библиотекой Java.В соответствии с таблицей разрыва строки ucd там также должен быть разрыв.

Что мне здесь не хватает?Не должно ли быть перерыва, где это говорит?Зависит ли эта локаль, но не указана в файле LineBreakTest?

Вот некоторый код котлина для воспроизведения.

val lineInstance = java.text.BreakIterator.getLineInstance()
val lineInstanceIcu4j = com.ibm.icu.text.BreakIterator.getLineInstance()

fun main() {
    println(lineBreakJava("-#"))
    println(lineBreakIcu4j("-#"))
}

fun lineBreakJava(text: String): MutableList<String> {
    lineInstance.setText(text)
    var start = lineInstance.first()
    var end = lineInstance.next()
    val breakableLocations = mutableListOf<String>()
    while (end != BreakIterator.DONE) {
        val substring = text.substring(start, end)
        breakableLocations.add(substring)
        start = end
        end = lineInstance.next()
    }
    return breakableLocations
}

fun lineBreakIcu4j(text: String): MutableList<String> {
    lineInstanceIcu4j.setText(text)
    var start = lineInstanceIcu4j.first()
    var end = lineInstanceIcu4j.next()
    val breakableLocations = mutableListOf<String>()
    while (end != BreakIterator.DONE) {
        val substring = text.substring(start, end)
        breakableLocations.add(substring)
        start = end
        end = lineInstanceIcu4j.next()
    }
    return breakableLocations
}

фактический вывод:

[-, #]
[-#]

ожидаемый вывод:

[-, #]
[-, #]

edit:

Очевидно, IntelliJ удалил мою зависимость от icu4j.После добавления этого я получаю обратное тому, что происходило раньше.Теперь проходящие тестовые задания не выполняются.Я обновил пример с one неудачных случаев.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...