【问题标题】:How do I split a string by "\\"如何用“\\”分割字符串
【发布时间】: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


【解决方案1】:

只需使用"\\\\"。 Java 将"\\" 解释为一个"\",所以"\\\\" = "\\"

String s = "E:\\Confluence_Attachments\\ver003\\10\\85\\"
        + "1835010\\124\\165\\4915874\\19169322\\1";

String[] splittedFileName2 = s.split("\\\\");

System.out.println(" extractReqFields2222:  ");

System.out.println(Arrays.toString(splittedFileName2));

输出:

 extractReqFields2222:  
[E:, Confluence_Attachments, ver003, 10, 85, 1835010, 124, 165, 4915874, 19169322, 1]

【讨论】:

    【解决方案2】:

    试试这个

     String s = "E:\\Confluence_Attachments\\ver003\\10\\85\\"
                    + "1835010\\124\\165\\4915874\\19169322\\1";
           String[] splittedFileName2 = s.split("\\\\");
    
           System.out.println(" extractReqFields2222:  ");
    
           System.out.println(Arrays.toString(splittedFileName2));
    

    O/P

    extractReqFields2222:  
    [E:, Confluence_Attachments, ver003, 10, 85, 1835010, 124, 165, 4915874, 19169322, 1]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-12
      • 2011-03-26
      • 1970-01-01
      • 2017-11-30
      • 2013-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多