Tôi có một chuỗi mà tôi đang tạo và tôi cần thêm nhiều ký tự "\ 0" (null) vào chuỗi. Giữa mỗi ký tự null, là dữ liệu văn bản khác (chỉ các ký tự chữ và số ASCII).Có thể thêm dữ liệu vào chuỗi sau khi thêm " 0" (null) không?
Vấn đề của tôi là trong J2SE khi bạn thêm null đầu tiên (\ 0), java có vẻ như xác định rằng đó là một chuỗi terminator, (tương tự như C++), và bỏ qua tất cả các dữ liệu khác được nối thêm. Không có lỗi được nêu ra, dữ liệu theo sau chỉ bị bỏ qua. Tôi cần phải ép buộc dữ liệu dấu sau bổ sung sau khi một null trong chuỗi. Tôi phải làm điều này cho một cơ sở dữ liệu cũ mà tôi đang hỗ trợ.
Tôi đã cố gắng mã hóa/giải mã chuỗi với hy vọng rằng một cái gì đó như% 00 sẽ đánh lừa sự giải thích của hành vi chuỗi, nhưng khi tôi mã hóa lại chuỗi, Java sẽ thấy ký tự rỗng và xóa tất cả dữ liệu sau null đầu tiên.
Cập nhật: Dưới đây là đoạn mã có liên quan. Có, tôi đang cố gắng sử dụng Strings
. Tôi dự định thử ký tự, nhưng tôi vẫn phải lưu nó vào cơ sở dữ liệu như một chuỗi, vì vậy tôi nghi ngờ rằng tôi sẽ kết thúc với cùng một vấn đề.
Một số nền. Tôi đang nhận dữ liệu qua bài đăng HTTP có "\ n". Tôi cần phải loại bỏ các dòng mới và thay thế chúng bằng "\ 0". Phương thức "debug
" chỉ là một phương pháp đơn giản mà không 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, một String, cam kết cơ sở dữ liệu và cần phải được thực hiện như một String. Những gì tôi quan sát khi tôi hiển thị giá trị hiện tại của sNewValue
sau mỗi lần lặp trong giao diện điều khiển là một cái gì đó như thế này:
đầu vào là value1 \ nValue2 \ nValue3 Output trong giao diện điều khiển được đem lại cho tôi từ mã này
value1
value1
value1
tôi hy vọng
value1
value1 value2
value1 value2 value3
với null không thể in được giữa value1, value2 và value3 tương ứng. Lưu ý rằng giá trị thực sự được lưu lại vào cơ sở dữ liệu cũng chỉ là "value1". Vì vậy, nó không chỉ là một vấn đề hiển thị giao diện điều khiển. Dữ liệu sau \ 0 bị bỏ qua.
Trong java, bạn không bao giờ có thể nói "nhân vật vô giá trị". Giá trị 'null' và Java không sử dụng ký tự ASCII thay vì sử dụng unicode. – Lion
Bạn định làm gì với Chuỗi này khi bạn có? – Tom
@Lion: Không đúng - ký tự 0 trong Unicode được gọi là ký tự rỗng. Xem http://www.unicode.org/charts/PDF/U0000.pdf –