3

我正在尝试转换此字符串:

'"This is a normal string","This, has a comma inside it"'

通过 进入一个数组string.split(","),但不是在数组中获取两个元素,而是得到三个:

["This is a normal string","This","has a comma inside it"]

关于可能的解决方法有什么建议吗?如何在关闭双引号而不是逗号时拆分字符串?

4

1 回答 1

4

认为扫描方法可能是最简单的:

s.scan(/"(.*?)"/).flatten #=> ["This is a normal string", "This, has a comma inside it"]

否则,只需确保拆分逗号前面有一个引号字符:

s.split(/(?<="),/) #=> ["\"This is a normal string\"", "\"This, has a comma inside it\""]

我仍然更喜欢第一种方法,因为它还删除了字符串周围的引号。

最后,如果您有非常棘手的带有转义引号的字符串,您可以添加检查以查看引号后面是逗号还是字符串结尾:

s = '"This is a \"normal\" string","This, has a comma inside it"'
s.scan(/"(.*?)"(?:,|\z)/).flatten #=> ["This is a \\\"normal\\\" string", "This, has a comma inside it"]
于 2013-11-04T15:09:43.887 回答