使用拆分方法拆分字符串

时间:2012-11-07 11:52:58

标签: java android string parsing split

我想分割一个这样的字符串:

  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:

7 个答案:

答案 0 :(得分:5)

尝试

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

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

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

下面是一些元字符

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

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

周围

像:

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

答案 1 :(得分:2)

您需要与\\\\分开,因为原始字符串应为\\。请使用以下测试用例自行尝试:

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


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

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

试试这个:

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

答案 5 :(得分:0)

原始输入文字应为

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

而不是

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

答案 6 :(得分:0)

这有效,

    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]);      
    }