将UTF16字符串拆分为NULL的简单方法

时间:2017-11-07 08:51:05

标签: java string utf-16

我从一个字节数组中提取UTF16字符串,字符串被一个或多个NULL(U + 0000)分隔,当我打印转换后的字符串时,它自动修剪NULL,下面的示例程序输出& #34; WINWIN"

import java.nio.charset.Charset;

class Ucs {
    public static void main(String[] args) {
        byte[] b = new byte[] {87, 0, 105, 0, 110, 0, 0, 0, 0, 0, 87, 0, 105, 0, 110, 0, 0, 0}; 
        String s = new String(b, Charset.forName("UTF-16LE"));
        System.out.println(s);
    }   
}

但是我希望他们分开像#34; Win Win",只有当我把s分开时。我知道我可以在for循环中找到NULL字符,这真的很讨厌。有一种简单的方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:2)

您可以使用split

        System.out.println(Arrays.asList(s.split("\\00")));

答案 1 :(得分:0)

您可以使用名为replaceAll()的方法。使用起来非常简单。

string.replaceAll("<the letter you want to replace>", "");

请注意,如果您正在寻找的话,这不会真正提高您的表现。