Unicode联盟提供了一个LineBreakTest file,用于验证您的换行代码是否正常工作。使用Unicode的自有库 icu4j
,我无法通过× [0.3] HYPHEN-MINUS (HY) ÷ [999.0] NUMBER SIGN (AL) ÷ [0.3]
测试用例。 可以与Java的内置库一起使用。根据{{3}},那里也应该休息一下。
我在这里想念什么?它说的地方应该不休息吗?此语言环境是否依赖,但未在LineBreakTest文件中指定?
这里有一些Kotlin代码可以重现。
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
}
实际输出:
[-, #]
[-#]
预期输出:
[-, #]
[-, #]
编辑:
显然IntelliJ删除了我的icu4j依赖项。将其添加回去后,我得到了与之前发生的相反的事情。现在通过的测试用例失败了。我已经用 one 失败的案例更新了示例。