添加"\0"(空)后是否可以将数据添加到字符串中?



我有一个我正在创建的字符串,我需要向字符串添加多个"" (null)字符。在每个空字符之间,是其他文本数据(只有ASCII字母数字字符)。

我的问题是,在J2SE中,当您添加第一个null()时,java似乎会确定它是字符串终止符(类似于c++),并忽略附加的所有其他数据。不会引发错误,只是忽略尾随数据。我需要在字符串中的null之后强制附加尾随数据。我必须为我支持的遗留数据库这样做。

我试图编码/解码字符串,希望像%00这样的东西会欺骗字符串行为的解释,但是当我重新编码字符串时,Java再次看到null字符,并删除第一个null之后的所有数据。

更新:这里是相关的代码片段。是的,我正在尝试使用Strings。我打算尝试字符,但我仍然必须将其保存为字符串到数据库中,所以我怀疑我最终会遇到同样的问题。

一些背景知识。我正在通过具有"n"的HTTP帖子接收数据。我需要删除换行符并将其替换为""。"debug"方法只是一个简单的方法,做System.out.println

                String[] arrLines = sValue.split("n");
                for(int k=0;k<arrLines.length;k++) {
                    if (0<k) {
                        sNewValue += "";
                    }
                    sNewValue+= arrLines[k];
                    debug("New value =" + sNewValue);
                }

sNewValue,一个字符串,提交给数据库,需要作为字符串完成。当我在控制台中每次迭代后显示sNewValue的当前值时,我所观察到的是这样的:

输入是value1nValue2nValue3控制台的输出给我的是以下代码

value1
value1
value1

我在等

value1
value1 value2
value1 value2 value3 

在value1, value2和value3之间分别为不可打印的null。注意,实际保存回数据库的值也只是"value1"。所以,这不仅仅是控制台显示的问题。之后的数据将被忽略。

强烈怀疑这与字符串中的文本本身无关-我怀疑这只是它的显示方式。例如,试试这个:

public class Test {
    public static void main(String[] args) {
        String first = "first";
        String second = "second";
        String third = "third";
        String text = first + "" + second + "" + third;
        System.out.println(text.length()); // Prints 18
    }
}

打印18,显示所有字符都存在。但是,如果您尝试在UI标签中显示text,我不会惊讶地发现只有first。(在相当弱的调试器中可能也是如此。)

同样,你应该能够使用:

 char c = text.charAt(7);

现在c应该是'e',这是"second"的第二个字母。

基本上,我希望Java的核心根本不关心它包含U+0000的事实。就Java而言,它只是另一个字符。只有在本地代码的边界(例如display)才有可能导致问题。

如果这没有帮助,请解释确切地你所观察到的-是什么让你认为其余的数据没有被附加。

编辑:另一种诊断方法是打印出字符串中每个字符的Unicode值:
for (int i = 0; i < text.length(); i++) {
    System.out.println((int) text.charAt(i));
}

我建议您使用char[]List<Char>,因为听起来您并没有真正使用String(真正的字符串通常不包含null或其他不可打印的字符)。

StringBuffer类的相同行为?

因为""会产生一些麻烦,我建议不要使用它。当实际将字符串写入您的DB时,我会尝试用""替换一些更好的分隔符

这是因为是Java中的转义字符(与许多c相关的语言一样),您需要使用额外的进行转义,如下所示。

String str="\0Java language";
System.out.println(str);

,您应该能够在控制台上显示Java语言

相关内容

  • 没有找到相关文章

最新更新