正确分割UTF-8字符串的方法

时间:2018-01-24 08:52:41

标签: java string utf-8 token

我想分割一个utf-8字符串。

我尝试了StringTokenizer,但失败了。

标题应为“0”,但显示为“عدي_صدام_حسين”。

    String test = "en.m عُدي_صدّام_حُسين 1 0";

    StringTokenizer stringTokenizer = new StringTokenizer(test);
    String code = stringTokenizer.nextToken();
    String title = stringTokenizer.nextToken();

enter image description here 拆分utf-8字符串的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

这里的问题是阿拉伯语文本不是字符串的“末尾”。

例如,如果我选择字符串文字的内容(在Chrome中),从左到右移动鼠标,则首先选择en.m,然后选择所有阿拉伯文字,然后选择0 1。文本只是看起来“结束”,因为它是如何呈现的。

在Java源代码中指定的字符串实际上 具有عُدي_صدّام_حُسين作为第二个标记。所以,你正确地分裂它,你只是没有分裂你认为你分裂的东西。

答案 1 :(得分:0)

通常, 没有正确的方法,但我通常使用substring()类的方法String(请参阅here)。您可以将它传递给begin索引,以使其从该索引返回到原始String结尾的子字符串,或者返回原始String中子字符串的两个边界。使用同一类的方法indexOf(),如果您不知道其索引,则可以在原始String中找到一个字符。