gpt4 book ai didi

java - 以逗号分隔的字符串排除双引号中的逗号并分隔相邻的逗号

转载 作者:行者123 更新时间:2023-11-30 05:51:00 25 4
gpt4 key购买 nike

我想根据逗号拆分一个字符串,不包括双引号中的逗号,如果有任何相邻的逗号,它们应该被算作单独的标记

我可以使用正则表达式 [^,\"']+|\"([^\"]*)\"

我可以在不包括双引号的逗号上进行字符串拆分/p>

但如果有相邻的逗号,它就无法正确标记。例子对于字符串

one,two,three,four,"five1,five2", six ,seven,"eight1,eight2","nine",,eleven

输出应该是

one
two
three
four
five1,five2
six
seven
eight1,eight2
nine

eleven

请帮忙

最佳答案

如果您的所有报价都匹配,您想要拆分的每个逗号后面都会跟有偶数个 "。因此您可以使用前瞻并将这个东西填充到 myString .split(模式, -1):

,(?=(?:(?:[^\"]*\"){2})*[^\"]*$)

只有在有问题的逗号和字符串末尾之间有偶数个 " 时才会匹配。

请注意 split-1 参数很重要,否则尾随的空字符串将被忽略。

旁注:我不知道 Java 正则表达式引擎优化得如何,所以如果失败,这种先行可能效率很低,因为它会不必要地回溯。如果您遇到性能问题,请尝试使量词具有所有格:

,(?=(?:(?:[^\"]*+\"){2})*+[^\"]*+$)

这将阻止引擎回溯。

关于java - 以逗号分隔的字符串排除双引号中的逗号并分隔相邻的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13267840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com