如何在逗号和引号上拆分此字符串? [复制]
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");
以删除引号。
【讨论】:
以上是关于如何在逗号和引号上拆分此字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
使用逗号拆分字符串,但忽略双引号内的逗号 - javascript