Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用反斜杠零作为分隔符分隔Java中的文本_Java_Escaping_Character_Tokenize - Fatal编程技术网

用反斜杠零作为分隔符分隔Java中的文本

用反斜杠零作为分隔符分隔Java中的文本,java,escaping,character,tokenize,Java,Escaping,Character,Tokenize,假设我有一个包含以下内容的二进制文件: abc\0def\0ghi\0 内容已被读取并存储在字符串变量s中。如何将组件“abc”、“def”、“ghi”提取到不同的字符串标记中?通常的方法(如split、stringTokenizer)不接受\0作为分隔符。\0是,因此可以使用其unicode表示形式作为分隔符 String content = "abc\0def\0ghi\0"; String[] components = content.split("\u0000"); 但是,您可以仅使

假设我有一个包含以下内容的二进制文件:

abc\0def\0ghi\0
内容已被读取并存储在字符串变量s中。如何将组件“abc”、“def”、“ghi”提取到不同的字符串标记中?通常的方法(如split、stringTokenizer)不接受
\0
作为分隔符。

\0
是,因此可以使用其unicode表示形式作为分隔符

String content = "abc\0def\0ghi\0";
String[] components = content.split("\u0000");

但是,您可以仅使用“\0”作为分隔符进行拆分。

如果原始字符串是
“abc\\0def\\0ghi\\0”
,则可以使用
拆分(\\\\0”)


如果原始字符串是
“abc\0def\0ghi\0”
,则可以使用
split(“\0”)


我认为这样做行不通:“索引2:\0附近的非法八进制转义序列”我认为原始字符串是
“abc\\0def\\0ghi\\0”
——OP显示的字符串就是文件中的字符串。我可能误解了。@assylias我想你可能误解了;空字符是文件中常见的分隔符,因此,合理地假设文件中的“\0”大于“\\0”s.@Vulcan您是对的;-)请注意,
content.split(“\0”)
也会起作用。@AssyliasNice指出,它甚至没有想到要尝试,因为OP说它不起作用。我会在答案中添加这一点,谢谢:)因为选择反斜杠后跟零作为分隔符是非常自然的。
"abc\\0def\\0ghi\\0".split("\\\\0")
"abc\0def\0ghi\0".split("\0")