将编码为字符阵列编码为Java字符串的C-Ctyle字符串转换为Java字符串



我有一个C-Style字符串编码为Java中的字符数组,但是我想将此数组转换为Java字符串。我尝试使用匹配的构造函数

String toRet = new String(new char[]{'B','A','D','', 'G', 'A', 'R', 'B', 'A', 'G', 'E'});
System.out.println(Arrays.toString(toRet.toCharArray()));

但结果是不正确的,实际上是奇怪的越野车。这是上述代码输出:

[B, A, D,

这就是我想要的

[B, A, D]

我在Ubuntu上的OpenJDK6上运行。我尚未在其他VM上测试上述代码。

无需在此处参与其中。只需复制一个比输入数组短的新数组。用于此任务的方法是Arrays.copyOf

您的输出之所以出现故障,是因为Java中的字符串与无效的终端无关。您的第一行代码创建了一个字符串,其最后一个字符为null-thaCter。

对您更新的问题的回答

如果您在Null-Char之后有垃圾,则可以使用new String(inputArray),然后找到带有String.indexOf('')的null-Char,然后在String.substring操作中使用该芯片来切除不需要的零件。但是,仅在数组上迭代以定位null-char,然后将 Arrays.copyOf与该索引用作截止点。

您可以使用 trim()删除空间字符:

System.out.println(Arrays.toString(toRet.trim().toCharArray()));

要使必须维护您的代码的人感到困惑,您可以写:

char[] dta = new char[]{'B','A','D','', 'G', 'A', 'R', 'B', 'A', 'G', 'E'};
String string = (dta[0] == '') ? "" : (new String(dta)).split("")[0];
System.out.println(string.toCharArray());

相关内容

  • 没有找到相关文章

最新更新