在Java中,如何拆分这样的行?

在Java中,如何拆分这样的行?,java,split,Java,Split,我知道如何使用Java的字符串拆分方法,如下所示 String s="a,b,c"; s.split(","); 但如何拆分以下行: FirstName,LastName,Companies,Title,EmailAddress,PhoneNumbers,Tags,Note Tom,Smith,ABC Co.,Manager,toms@xyz.com,,, John,White,"Some-Company, Inc.","Network Manager, Architect",xyz@a

我知道如何使用Java的字符串拆分方法,如下所示

String s="a,b,c";
s.split(",");
但如何拆分以下行:

 FirstName,LastName,Companies,Title,EmailAddress,PhoneNumbers,Tags,Note
 Tom,Smith,ABC Co.,Manager,toms@xyz.com,,,
 John,White,"Some-Company, Inc.","Network Manager, Architect",xyz@abc.com,,,
前两行很容易处理,但第三行有一些问题,因为它包括[,]内[“],有什么建议吗


编辑:我已经研究了另外两个类似的问题和答案,但它们与我的问题不同,我的问题有[,]作为分隔符,其他两个问题有一个空格字符作为分隔符,我的问题中也有空格,这使问题变得复杂,因此如果我使用该答案,它将不起作用,请不要将其标记为重复。

经过一些研究和测试,我找到了答案,下面是一些示例代码:

String str="John,White,\"Some-Company, Inc.\",\"Network Manager, Architect\",xyz@abc.com,,,";
Vector<String> v=new Vector<String>(8);
for (int i=0;i<8;i++) v.add("");

String regex="\"([^\"]*)\"|([^,\\s][^\\,]*[^,\\s]*)";
m=Pattern.compile(regex).matcher(str);
int index=0;
while (m.find())
{
  if (m.group(1) != null) v.set(index,"Quoted [" + m.group(1) + "]");
  else v.set(index," Plain [" + m.group(2) + "]");
  index++;
}
for (int i=0;i<v.size();i++) System.out.println("<"+(i+1)+"> "+v.elementAt(i));
String str=“John,White,\'Some Company,Inc.\,\'Network Manager,Architect\”,xyz@abc.com,,,";
向量v=新向量(8);

对于(int i=0;i使用CSV库来帮助您分析文本。@Carcigenicate:否。Regex不应用于此类事情,也不适用于嵌套符号。使用Regex将导致两个问题——原始问题和难以使用和维护的Regex代码。@HovercraftFullOfEels真的吗?我会认为这正是t正则表达式会对他有用。好的,删除。签出;@Carcigenicate:请签出: