我从一个字节数组中提取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字符,这真的很讨厌。有一种简单的方法可以做到这一点吗?
答案 0 :(得分:2)
您可以使用split
:
System.out.println(Arrays.asList(s.split("\\00")));
答案 1 :(得分:0)
您可以使用名为replaceAll()的方法。使用起来非常简单。
string.replaceAll("<the letter you want to replace>", "");
请注意,如果您正在寻找的话,这不会真正提高您的表现。