У меня есть строка, которую я создаю, и мне нужно добавить в строку несколько символов «\ 0» (null). Между каждым нулевым символом находятся другие текстовые данные (только буквенно-цифровые символы ASCII).Можно ли добавить данные в строку после добавления « 0» (null)?
Моя проблема заключается в том, что в J2SE при добавлении первого значения null (\ 0) java затем, по-видимому, определяет, что это строковый терминатор (аналогичный C++) и игнорирует все остальные данные, которые добавляются. Ошибка не возникает, конечные данные просто игнорируются. Мне нужно принудительно добавить дополнительные конечные данные после нулевого значения в строке. Я должен сделать это для старой базы данных, которую я поддерживаю.
Я попытался кодировать/декодировать строку в надежде, что что-то вроде% 00 обманет интерпретацию поведения строки, но когда я перекодирую строку, Java снова увидит нулевой символ и удалит все данные после первый нуль.
Обновление: Вот соответствующий фрагмент кода. Да, я пытаюсь использовать Strings
. Я намереваюсь попробовать символы, но мне все равно нужно сохранить его в базе данных как строку, поэтому я подозреваю, что у меня будет та же проблема.
Некоторые фоне. Я получаю данные через HTTP-сообщение, которое имеет «\ n». Мне нужно удалить новые строки и заменить их на «\ 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, струнные, стремятся к базе данных и должен быть сделан в виде строки. Что я наблюдаю, когда я отобразить текущее значение sNewValue
после каждой итерации в консоли что-то вроде этого:
вход value1 \ nValue2 \ nValue3 Вывод в консоль дает мне из этого кода
value1
value1
value1
Я ожидаю
value1
value1 value2
value1 value2 value3
с непечатаемым нулем между значение1, значение2 и value3 соответственно. Обратите внимание, что значение, фактически возвращаемое в базу данных, также является «значением1». Таким образом, это не просто проблема с консольным дисплеем. Данные после \ 0 игнорируются.
В Java, вы никогда не можете сказать: «нулевой символ». Его значение «null» и Java не используют символы ASCII, а используют unicode. – Lion
Что ты собираешься делать с этой Строкой, когда она у тебя есть? – Tom
@ Lion: Untrue - символ 0 в Unicode известен как нулевой символ. См. Http://www.unicode.org/charts/PDF/U0000.pdf –