java分割混乱的空格字符

| 我正在拆分一个字符串,其中包含Windows系统中的文件名。该字符串使用ascii FS将文件名与其他信息分开 例如filename.jpgFSotherInformationFSanotherPartOfInformation 下面是一些示例代码:
String fs = new String(new byte[]{(byte)32}); 
String information =\"filename (copy).jpg\"+fs+\"otherInformation\"; 
String[] parts = information.split(fs);
为什么split将空格分隔符与ascii-FS混淆了? 我应该使用其他拆分功能吗? Pattern.quote(fs)确实可以帮助... :-(     
已邀请:
因为FS不是ascii值32。 http://bestofthisweb.com/blogs/tag/ascii-table/
FS
是字符28,但是不应在文件名中使用此控制字符,仅用于某些罕见的二进制文件格式(我不知道一种使用它的格式) 空格字符为32,这就是为什么它看起来与拆分相同的原因,因为它是。 对于简单的字段分隔符,建议您使用\',\'或\'\\ t \',它们可以轻松地阅读为文本或使用电子表格程序包。 我建议逐步调试程序中的代码,以便您可以看到程序在做什么。     
您已经用空格初始化
fs
(以相当复杂的方式)。以下是相等的,并显示您的问题:
String fs = \" \"; 
String information =\"filename (copy).jpg\"+fs+\"otherInformation\"; 
String[] parts = information.split(fs);
ASCII字符
FS
的编号为
0x1C
,因此应该可以正常使用:
String fs = \"\\u001C\"; 
String information =\"filename (copy).jpg\"+fs+\"otherInformation\"; 
String[] parts = information.split(fs);
背景资料   文件分隔符FS是一个有趣的控制代码,因为它使我们了解了六十年代计算机技术的组织方式。现在,我们习惯于随机访问RAM和磁盘等介质,但是当定义ASCII标准时,大多数数据都是串行的。我不仅在谈论串行通信,还在谈论诸如打孔卡,纸带和磁带之类的串行存储。在这种情况下,使用单个控制代码来表示两个文件的分离显然是有效的。 FS是为此目的而定义的。 (资源) 发明“ 1”是为了分离真实文件,而不是分层文件目录中的文件名。从技术上讲,是的,您可以使用它,但是它具有不同的含义。     
因为FS是Ascii值28 ASCII值32是
space
    
Split \的参数实际上是一个正则表达式,您是否尝试过
String[] parts = information.split(\"\\\\x20\");
甚至
String[] parts = information.split(\"\\\\s\");
    

要回复问题请先登录注册