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

Simple way to split UTF16 string by NULL

我正在从字节数组中提取 UTF16 字符串,字符串由一个或多个 NULL(U+0000) 分隔,当我打印转换后的字符串时,它会自动修剪 NULL,下面的示例程序输出 "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);
    }   
}

但我希望它们像 "Win Win" 一样分开,前提是我将 s 分开。我知道我可以在 for 循环中找到 NULL 字符,这真的很讨厌。有没有简单的方法可以做到这一点?

您可以使用 split:

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

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

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

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