【发布时间】:2018-08-24 05:01:21
【问题描述】:
String s = "E:\Confluence_Attachments\ver003\10\85\"
+ "1835010\124\165\4915874\19169322\1";
如何用“\”分割上面的字符串。我尝试了以下两种方法,但都没有奏效。
方法一:
String pattern = Pattern.quote(System.getProperty("file.separator"));
String[] splittedFileName = s.split(pattern);
System.out.println(" extractReqFields: ");
System.out.println(Arrays.toString(splittedFileName));
方法二:
//String pattern2 = "\\";
//String[] splittedFileName2 = s.split(pattern);
String[] splittedFileName2 = s.split("\\");
System.out.println(" extractReqFields2222: ");
System.out.println(Arrays.toString(splittedFileName2));
我从另一种方法得到以下字符串:
String s = "E:\Confluence_Attachments\ver003\10\85\"
+ "1835010\124\165\4915874\19169322\1";
所以我无法逃脱反斜杠。现在我将如何用'\'分割它?
我是否应该使用正则表达式以编程方式添加转义字符然后拆分?
您能告诉我如何以编程方式添加转义字符吗?
我可以理解这里有答案:
How to split a java string at backslash
但我的问题是如何以编程方式添加转义字符。我需要这方面的帮助。
【问题讨论】:
-
您正在使用
String.split的特殊功能。它不仅仅是一个字符串,而是一个正则表达式!而正则表达式"\\"(一个反斜杠)根本不匹配任何东西。您必须按照其他答案的建议转义反斜杠(使用另一个反斜杠)。 -
我不明白您的编辑,抱歉。要拆分您在反斜杠处获得的字符串,您无需转义字符串中的反斜杠。只有用于拆分的正则表达式中的反斜杠。这两个答案都有效。另一条评论是,您可以查看
Path类来表示您的路径名,而不是仅仅将其拆分为一个数组。 -
您的方法 1 也适用于我并提供
[E:, Confluence_Attachments, ver003, 10, 85, 1835010, 124, 165, 4915874, 19169322, 1](未在 Windows 上测试,因此无法保证,但我相信)。
标签: java regex string split filepath