首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >icu4j BreakIterator在Linux上返回错误的中文单词边界

icu4j BreakIterator在Linux上返回错误的中文单词边界
EN

Stack Overflow用户
提问于 2017-08-29 00:48:58
回答 1查看 167关注 0票数 0

我的应用程序需要能够检测字符串中的单词数量。为此,我使用了ICU4J库,特别是BreakIterator。此代码需要适用于英语、中文、日语和德语。我发现中文在Windows上似乎可以正常工作,但在linux上就不行了。在linux上,它不会发现断字符。我刚接触ICU4J,所以这可能是我的代码?

代码语言:javascript
复制
    public static int getWordBoundaryCount(String term, Locale locale) {
    if (term == null) {
        throw new IllegalArgumentException("term is null");
    }
    int wordBoundaryCount = 0;
    BreakIterator wb = BreakIterator.getWordInstance(locale);
    synchronized(wb) {
        wb.setText(term);
        int start = wb.first();
        for (int end = wb.next(); end != BreakIterator.DONE; start = end, end = wb.next()) {
            String tt = term.substring(start,end);
            System.out.println(tt);
            wordBoundaryCount++;
        }
    }
    return wordBoundaryCount;
}

给定字符串"丙酮“和从zh_CN创建的区域设置。在Windows上,上面的代码返回2,但在Linux上,它返回1。实际上,无论字符串中有多少个中文字符,它都会返回1。它在Windows和Linux上都适用于英语,但它不能检测Linux上的中文单词边界。我以Jira in the icu project:的形式发布了这篇文章,告诉他们Linux是正确的,我的测试用例都是由多个字符组成的单个中文单词。他们没有解决在Windows和Linux上的不同行为

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-03 01:15:06

根据ICU4J网站的说法,我的测试用例都是由多个字符组成的单个单词,所以Linux工作正常。他们没有评论为什么相同的代码在Windows上表现不同。我只需要它在Linux上运行。如果我认识更多说中文的人,我早就知道这一点了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45923819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档