这是一个简单的算法:
- 判断字符串是否以
'"'字符开头
- 将字符串拆分为由
'"' 字符分隔的数组。
- 用占位符标记引用的逗号
#COMMA#
- 如果输入以
'"' 开头,则在数组中标记索引 % 2 == 0 的那些项
- 否则标记数组中索引 % 2 == 1 的那些项
- 连接数组中的项目以形成修改后的输入字符串。
- 将字符串拆分为由
',' 字符分隔的数组。
- 将
#COMMA# 占位符数组中的所有实例替换为',' 字符。
- 数组是您的输出。
以下是 python 实现:
(固定处理'"a,b",c,"d,e,f,h","i,j,k"')
def parse_input(input):
quote_mod = int(not input.startswith('"'))
input = input.split('"')
for item in input:
if item == '':
input.remove(item)
for i in range(len(input)):
if i % 2 == quoted_mod:
input[i] = input[i].replace(",", "#COMMA#")
input = "".join(input).split(",")
for item in input:
if item == '':
input.remove(item)
for i in range(len(input)):
input[i] = input[i].replace("#COMMA#", ",")
return input
# parse_input('a,"string, with",various,"values, and some",quoted')
# -> ['a,string', ' with,various,values', ' and some,quoted']
# parse_input('"a,b",c,"d,e,f,h","i,j,k"')
# -> ['a,b', 'c', 'd,e,f,h', 'i,j,k']