我有一个正在创建的字符串,我需要在字符串中添加多个“\0”(空)字符。在每个空字符之间,是其他文本数据(只是 ASCII 字母数字字符)。
我的问题是,在 J2SE 中,当您添加第一个 null (\0) 时,java 似乎确定它是一个字符串终止符(类似于 C++),并忽略所有其他附加数据。不会引发错误,只是忽略尾随数据。我需要在字符串中的 null 之后强制附加尾随数据。我必须为我支持的旧数据库执行此操作。
我试图对字符串进行编码/解码,希望像 %00 这样的东西会欺骗对字符串行为的解释,但是当我重新编码字符串时,Java 再次看到空字符,并删除第一个空字符后的所有数据。
更新:这是相关的代码片段。是的,我正在尝试使用Strings
. 我打算尝试chars,但我仍然必须将它作为字符串保存到数据库中,所以我怀疑我最终会遇到同样的问题。
一些背景。我正在通过带有“\n”的 HTTP 帖子接收数据。我需要删除换行符并将它们替换为“\0”。" debug
" 方法只是一个简单的方法System.out.println
。
String[] arrLines = sValue.split("\n");
for(int k=0;k<arrLines.length;k++) {
if (0<k) {
sNewValue += "\0";
}
sNewValue+= arrLines[k];
debug("New value =" + sNewValue);
}
sNewValue,一个String,被提交到数据库,需要作为一个String来完成。当我sNewValue
在控制台中显示每次迭代后的当前值时,我观察到的是这样的:
输入是 value1\nValue2\nValue3 控制台中的输出是从这段代码给我的
value1
value1
value1
我期待
value1
value1 value2
value1 value2 value3
分别在 value1、value2 和 value3 之间具有不可打印的空值。请注意,实际保存回数据库的值也只是“value1”。因此,这不仅仅是控制台显示问题。\0 之后的数据被忽略。