如何按空格分割字符串但转义引号内的空格(在java中)?

时间:2012-01-20 17:04:42

标签: java regex string split

我有一个这样的字符串:

"Video or movie"    "parent"    "Media or entertainment"    "1" "1" "1" "0" "0"

我想用空格拆分它,但是引号内的空格应该被忽略。 所以分裂的字符串应该是:

"Video or movie"
"parent"
"Media or entertainment"
"1"
...

语言是java。

5 个答案:

答案 0 :(得分:6)

这应该为你做的工作:

   final String s = "\"Video or movie\"    \"parent\"    \"Media or entertainment\"    \"1\" \"1\" \"1\" \"0\" \"0\"";
        final String[] t = s.split("(?<=\") *(?=\")");
        for (final String x : t) {
            System.out.println(x);
        }

输出:

"Video or movie"
"parent"
"Media or entertainment"
"1"
"1"
"1"
"0"
"0"

答案 1 :(得分:4)

您可以使用:

Patter pt = Pattern.compile("(\"[^\"]*\")");

请记住,这也会捕获""(空字符串)。

<强>测试

String text="\"Video or movie\"    \"parent\"    \"Media or entertainment\"    \"1\" \"1\" \"1\" \"0\" \"0\"";
Matcher m = Pattern.compile("(\"[^\"]*\")").matcher(text);
while(m.find())
    System.out.printf("Macthed: [%s]%n", m.group(1));

<强>输出:

Macthed: ["Video or movie"]
Macthed: ["parent"]
Macthed: ["Media or entertainment"]
Macthed: ["1"]
Macthed: ["1"]
Macthed: ["1"]
Macthed: ["0"]
Macthed: ["0"]

答案 2 :(得分:2)

看看这个问题。您可以调整其解决方案以忽略引号中的空格而不是逗号。

Java: splitting a comma-separated string but ignoring commas in quotes

答案 3 :(得分:1)

不要分裂,只需匹配不是空格的东西。

Pattern p = Pattern.compile("\"(?:[^\"\\\\]|\\\\.)*\"|\\S+");
Matcher m = p.matcher(inputString);
while (m.find()) {
  System.out.println(m.group(0));
}

答案 4 :(得分:0)

“[] +”拆分? (包括引号)

如果他们不在字符串的开头或结尾,你可能需要添加“。”