Java 从包含空格的字节数组创建字符串

标签 java arrays string

我在从字节数组创建字符串时遇到了一个问题,在构造字符串时忽略了数组中的 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/

相关文章:

javascript - 从javascript中给定的字符串索引中删除n个字符

Java 单例空指针异常

java - 如何解决这些 AWS 导入问题?

java - 多个 JFrame 或 JDialog

php函数循环并最终返回处理后的数组

php - 检查数组是否为空

c++ - 获取包含 Null 终止字符串的字符串的长度

java - 同一群体中的重复个体

ruby-on-rails - 从数组中删除空白元素

比较宏定义中的字符串