我有一个这样的字符串:
"Video or movie" "parent" "Media or entertainment" "1" "1" "1" "0" "0"
我想用空格拆分它,但是引号内的空格应该被忽略。 所以分裂的字符串应该是:
"Video or movie"
"parent"
"Media or entertainment"
"1"
...
语言是java。
答案 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)
由“[] +”拆分? (包括引号)
如果他们不在字符串的开头或结尾,你可能需要添加“。”