我在从字节数组创建字符串时遇到了一个问题,在构造字符串时忽略了数组中的 0 值。我怎样才能做到,如果字节值为 0,字符串只是添加一个空格而不是删除它。
例如,此输出为 DT_TestTracelineCTestTraceli
。
public static void main(String[] args) {
byte[] text = {68, 84, 95, 84, 101, 115, 116, 84, 114, 97, 99, 101, 108, 105, 110, 101, 0, 0, 0, 0, 67, 84, 101, 115, 116, 84, 114, 97, 99, 101, 108, 105};
System.out.println(new String(text));
}
我该怎么做才能使用制表符或空格分隔这两个字符串,以便输出为 DT_TestTraceline CTestTraceli
谢谢
最佳答案
您应该为 new String()
指定一种编码 - 如果没有,您将使用平台默认设置(这会大大降低您的代码的可移植性,因为现在您正在假设您正在执行的环境)。
假设您使用的是 UTF-8,您可以将所有零替换为 32
,空格字符的 UTF-8 代码,它应该可以工作:
for(int i = 0; i < text.length; i++) {
if(text[i] == 0) {
text[i] = 32;
}
}
String result = new String(text, StandardCharsets.UTF_8);
您可以看到它正在运行 on ideone .
关于Java 从包含空格的字节数组创建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34406659/