Java如何处理\ on输入

时间:2014-07-21 20:22:52

标签: java filesystems

我目前正在尝试拆分String文件夹。我从文件系统中获取值,它通常看起来像EAM \ Testing。

String folder = "EAM\Testing"

String[] parts = folder.split("\\");

我知道\在java中有特殊的规则。

String folder = "EAM\\Testing"

String[] parts = folder.split("\\\\");

(我知道如果我可以控制输入的内容,上面的代码就可以了)

我的问题是我无法控制从文件位置输入的字符串文件夹。

有没有办法让文件只有一个文件夹才能使用?

这是我为Documentum企业管理系统编写的回收站组件。删除文档并且文件夹不再存在时我想重新创建它并为了重新创建它,文件夹名称必须是单独的,因为我必须一次创建一个。

以下是我获取文件夹名称的方法。

File f = new File(relationRecord.getRepeatingString(
                "dp_original_folder_paths",
                i));

(这会输入\EAM\testing

等输入
String folder1 = f.toString(); 

然后我通过

摆脱了第一个\
String folder = folder1.substring(1);

这给了我EAM\testing

4 个答案:

答案 0 :(得分:1)

如果这确实是一个文件路径,那么你应该consider using the Path class,它会让你的生活更轻松。

Path path = Paths.get("C:\\home\\joe\\foo");

System.out.format("toString: %s%n", path.toString());
System.out.format("getFileName: %s%n", path.getFileName());
System.out.format("getName(0): %s%n", path.getName(0));
System.out.format("getNameCount: %d%n", path.getNameCount());
System.out.format("subpath(0,2): %s%n", path.subpath(0,2));
System.out.format("getParent: %s%n", path.getParent());
System.out.format("getRoot: %s%n", path.getRoot());

答案 1 :(得分:1)

您的第二个选择

String[] parts = folder.split("\\\\");

您的输入字符串应该可以正常工作。当您编写像"EAM\\Testing"这样的字符串文字时,结果字符串只有一个斜杠。您可以在Java there中阅读有关转义序列的一些详细信息。

split中需要四个斜杠的原因是因为\是字符串文字和正则表达式的转义字符(String#split接受正则表达式作为其参数)

答案 2 :(得分:0)

你应该这样做 -

String s = "EAM\\testing";
String a[] = s.split("\\\\");

在这里你为String复制一次反斜杠(因为\是String的转义字符),并且因为同样的原因再次复制正则表达式。

答案 3 :(得分:0)

您的问题似乎是“如何从字符串中删除前导\

folder = folder.replaceAll("^\\\\", "");

如果找到字符串,则会在开头搜索反斜杠,如果找到,则将其替换为空(即删除它)。

关于反斜杠与路径中的正斜杠字符,java处理两者。