繁体   English   中英

使用拆分方法拆分字符串

[英]Splitting String using split method

我想拆分这样的字符串:

  C:\Program\files\images\flower.jpg     

但是,使用以下代码:

  String[] tokens = s.split("\\");
  String image= tokens[4];

我得到了这个错误:

 11-07 12:47:35.960: E/AndroidRuntime(6921): java.util.regex.PatternSyntaxException: Syntax error U_REGEX_BAD_ESCAPE_SEQUENCE near index 1:

尝试

String s="C:\\Program\\files\\images\\flower.jpg"

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

在java(正则表达式世界) \\是一个元字符。 如果要将元字符视为普通字符,则应附加一个\\或用\\ Q \\ E括起来。

下面是一些元字符

<([{\^-=$!|]})?*+.>

要将上面列出的任何字符视为普通字符,您必须使用'\\'将其转义或将它们括在\\ Q \\ E周围

喜欢:

        \\\\ or \\Q\\\\E

您需要使用\\\\\\\\进行拆分,因为原始字符串应该具有\\\\ 使用以下测试用例自行尝试:

    @Test
public void split(){
      String s = "C:\\Program\\files\\images\\flower.jpg";     


        String[] tokens = s.split("\\\\");
        String image= tokens[4];
        assertEquals("flower.jpg",image);
}

解释字符串有两个级别,首先语言解析器使它成为"\\" ,这就是正则表达式引擎看到的并且它是无效的,因为它是一个没有字符转义的转义序列。

所以你需要使用s.split("\\\\\\\\") ,以便正则表达式引擎看到\\\\ ,这反过来意味着文字\\

如果要在字符串文字中定义该字符串,则必须转义那里的反斜杠:

String s = "C:\\Program\\files\\images\\flower.jpg";     

String [] tokens = s.split(“\\\\\\\\”);

尝试这个:

String s = "C:/Program/files/images/flower.jpg";
String[] tokens = s.split("/");
enter code hereString image= tokens[4];

您的原始输入文本应该是

 C:\\Program\\files\\images\\flower.jpg  

代替

 C:\Program\files\images\flower.jpg  

这有效,

    public static void main(String[] args) {
        String str = "C:\\Program\\files\\images\\flower.jpg";
        str = str.replace("\\".toCharArray()[0], "/".toCharArray()[0]);
        System.out.println(str);
        String[] tokens  = str.split("/");
        System.out.println(tokens[4]);      
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM