仅当分隔符被引号包围时,才在Java中拆分字符串
假设我有以下字符串:仅当分隔符被引号包围时,才在Java中拆分字符串,java,regex,string,split,Java,Regex,String,Split,假设我有以下字符串: "John Doe","IT,SI","foo, bar" 我想把它分为: ["John Doe", "IT,SI", "foo, bar"] 我在考虑实施这样的东西: String line = "\"John Doe\",\"IT,SI\",\"foo, bar\""; String[] lineItems = line.split("\",\""); for (String lineItem : lineItems) { lineItem.removeA
"John Doe","IT,SI","foo, bar"
我想把它分为:
["John Doe", "IT,SI", "foo, bar"]
我在考虑实施这样的东西:
String line = "\"John Doe\",\"IT,SI\",\"foo, bar\"";
String[] lineItems = line.split("\",\"");
for (String lineItem : lineItems) {
lineItem.removeAll("\"");
}
它确实做到了这一点,但这似乎不是一种艺术状态。有更好的解决方案吗?下面的正则表达式适用于这种情况
String[] lineItems = line.split("(?<=\"),(?=\")");
String[]lineItems=line.split((?您需要双引号之间的单词,因此您可以使用以下正则表达式来提取它们,而不是拆分字符串:
/"([^"]+)"/g
见演示
或者您也可以将其命名为:
(?P<names>\b[^"]+)
OR
(?<names>\b[^"]+)
(?P\b[^”]+)
或
(?\b[^“]+)
不确定java是否支持p或以下内容应该可以解决这个问题
line.split("(?<=\"),(?=\")")
line.split(“(?请使用CSV解析器。谢谢您的建议,我会调查的。
line.split("(?<=\"),(?=\")")