如何在逗号和引号上拆分此字符串? [复制]

Posted

技术标签:

【中文标题】如何在逗号和引号上拆分此字符串? [复制]【英文标题】:How can I split this string on comma and quotation mark? [duplicate] 【发布时间】:2013-02-03 07:45:23 【问题描述】:

我从一个文本文件中读取,有时我会得到一个字符串,例如:

;onor Oyj,Native,Uor Oyj1,"Uponor Oyj, UBS, Innovation AB",39639d4d26:-21f7;

我需要这样拆分字符串:

'onor Oyj',  
'Native',  
'Uor Oyj1',  
'Uponor Oyj, UBS, Innovation AB',  
'39639d4d26:-21f7',  
';'

我该怎么做?

【问题讨论】:

尝试用 ' 替换 " 但后来我不知道如何继续 【参考方案1】:

类似:

  String str = ";onor Oyj,Native,Uor Oyj1,\"Uponor Oyj, UBS, Innovation AB\",39639d4d26:-21f7;";
  char[] c = str.toCharArray();
  boolean inQuote = false;
  for (int i = 0; i < c.length; i++)
  
     if (c[i] == ',' && !inQuote)
        c[i] = '\01'; // some value that doesn't appear in the string
     if (c[i] == '"')
        inQuote = !inQuote;
  
  String[] arr2 = String.valueOf(c).split("\\01");
  for (String s: arr2)
  
     System.out.println(s);
  

输出:

;onor Oyj
Native
Uor Oyj1
"Uponor Oyj, UBS, Innovation AB"
39639d4d26:-21f7;

String[] arr2 = String.valueOf(c).split("\\01"); 替换为String[] arr2 = String.valueOf(c).replaceAll("\"", "").split("\\01"); 以删除引号。

【讨论】:

以上是关于如何在逗号和引号上拆分此字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在逗号上拆分字符串并忽略双引号中的逗号[重复]

Java:拆分逗号分隔的字符串但忽略引号中的逗号

使用逗号拆分字符串,但忽略双引号内的逗号 - javascript

Python - 如何在拆分字符串时忽略双引号中的空格? [复制]

通过排除双引号内的逗号来拆分字符串

逗号和双引号CSV格式的正则表达式拆分[重复]