Why does .split(“\\”) generate an exception?

前端 未结 5 1448
死守一世寂寞
死守一世寂寞 2021-01-25 03:35

I have a String representing a directory, where \\ is used to separate folders. I want to split based on \"\\\\\":

String address = \"C         


        
相关标签:
5条回答
  • 2021-01-25 04:10

    String#split() method takes a regex. In regex, you need to escape the backslashes. And then for string literals in Java, you need to escape the backslash. In all, you need to use 4 backslashes:

    String[] splited = address.split("\\\\");
    
    0 讨论(0)
  • 2021-01-25 04:14

    Use separators:

    String address = "C:\saeed\test";
    String[] splited = address.split(System.getProperty("file.separator"));
    
    0 讨论(0)
  • 2021-01-25 04:15

    As others have suggested, you could use:

    String[] separated = address.split("\\\\");
    

    or you could use:

    String[] separated = address.split(Pattern.quote("\\")); 
    

    Also, for reference:

    String address = "C:\saeed\test";
    

    will not compile, since \s is not a valid escape sequence. Here \t is interpreted as the tab character, what you actually want is:

    String address = "C:\\saeed\\test";
    

    So, now we see that in order to get a \ in a String, we need "\\".

    The regular expression \\ matches a single backslash since \ is a special character in regex, and hence must be escaped. Once we put this in quotes, aka turn it into a String, we need to escape each of the backslashes, yielding "\\\\".

    0 讨论(0)
  • 2021-01-25 04:16

    \ has meaning as a part of the regex, so it too must be quoted. Try \\\\.

    The Java will have at \\\\, and produce \\ which is what the regex processor needs to obtain \.

    0 讨论(0)
  • 2021-01-25 04:27

    You need to use \\\\ instead of \\.

    The backslash(\) is an escape character in Java Strings.If you want to use backslash as a literal you have to type \\\\ ,as \ is also a escape character in regular expressions.

    For more details click here

    0 讨论(0)
提交回复
热议问题