【问题标题】:Unable to spilit a String with '\' character using JAVA无法使用 JAVA 拆分带有“\”字符的字符串
【发布时间】:2015-02-11 01:07:08
【问题描述】:

我正在尝试使用 JAVA 程序在 Windows 系统中重新创建文件夹结构。我正在从另一个系统获取预期的文件路径作为我的 java 程序中的字符串参数,并且应该拆分文件路径字符串以识别每个级别的文件夹名称。 '\'(Windows 系统中的文件路径字符串的一部分)与字符串中的其他合法字符一起使用时表现不同。它与字符串中的以下字符组合并产生不同的结果(生成不同的字符,因为\00的ascii值与\的ascii值不同,分别为0)。

String WindowsFilePath="drivename\folderName1\00000innerFolderName\03thefileName.fileExtension";

是否可以使用 JAVA 代码将此字符串拆分为

"drivename","folderName1","00000innerFolderName","03thefileName.fileExtension"

有关此问题根本原因的其他信息:

我有一个旧的目录结构,其中有人在文件系统中创建了名称为“001thImageFolder”、“firstImageFolder”等的文件夹。现在,如果我获得以上述方式命名的目录中的文件的文件路径,则文件路径中的“\”将附加文件夹名称的第一个或第一个和第二个字符,并自动转换为转义序列。我想消除这种转义序列转换。

【问题讨论】:

  • 而不是写\你需要写\\
  • 但你可以只使用File.separator 并附加它
  • @EpicPandaForce 同意。我的字符串中有转义序列。但是在该字符串中引入 '\\' 而不是 '\' 不在我手中。我正在使用这样的字符串获取我的 javaprogram 的提要。那么有没有办法使用 java 进行这种拆分?
  • 您从提要收到的响应是什么?

标签: java split substring directory-structure


【解决方案1】:

您的字符串中没有反斜杠。

只有转义序列:

  • \f = 换页符
  • \0 = nul char(十六进制零)

但是,如果您确实有反斜杠:

String parts = str.split("\\\\");

注意双双反斜杠;加倍一次以在字符串文字中创建单个反斜杠字符,并加倍 again 以在 regex 中创建文字反斜杠。


我认为你的意图是字符串文字是:

String windowsFilePath ="drivename\\folderName1\\00000innerFolderName\\03thefileName.fileExtension";

【讨论】:

  • @thomas 实际上比这更悲惨 - 请参阅编辑后的答案
  • 是的,这是我的意图。如何更改 'String WindowsFilePath="drivename\folderName1\00000innerFolderName\03thefileName.fileExtension";'到 'String windowsFilePath ="drivename\\folderName1\\00000innerFolderName\\03thefileName.fileExtension";'
猜你喜欢
  • 2016-03-03
  • 1970-01-01
  • 2014-05-27
  • 2012-09-04
  • 2021-07-02
  • 2019-01-06
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多