如何按空格分割字符串但转义引号内的空格(在java中)?
我有一个像这样的字符串:
"Video or movie" "parent" "Media or entertainment" "1" "1" "1" "0" "0"
我想用空格拆分它,但引号内的空格应该被忽略。 所以分裂的字符串应该是:
"Video or movie" "parent" "Media or entertainment" "1" ...
语言是java。
这应该为你做的工作:
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"
您可以使用:
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));
OUTPUT:
Macthed: ["Video or movie"] Macthed: ["parent"] Macthed: ["Media or entertainment"] Macthed: ["1"] Macthed: ["1"] Macthed: ["1"] Macthed: ["0"] Macthed: ["0"]
看看这个问题。 您可以调整其解决方案以忽略引号中的空格而不是逗号。
Java:拆分以逗号分隔的字符串,但忽略引号中的逗号
而不是拆分,只需匹配不是空间的东西。
Pattern p = Pattern.compile("\"(?:[^\"\\\\]|\\\\.)*\"|\\S+"); Matcher m = p.matcher(inputString); while (m.find()) { System.out.println(m.group(0)); }
用“[] +”拆分? (包括引号)
如果它们不在字符串的开头或结尾,你可能需要添加缺失的“s”。