ruby - 基于右双引号的字符串到数组

标签 ruby

我正在尝试转换这个字符串:

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

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

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

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

最佳答案

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

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"]

关于ruby - 基于右双引号的字符串到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19770607/

相关文章:

ruby - Jeckyll的带有make的Docker镜像

ruby - 如何从数组中生成数组的 Ruby 哈希

ruby-on-rails - 如何将来自 link_to 的文本和 ruby​​ 代码放在 haml 中的同一行?

javascript - 是否可以模拟 Facebook 跟踪像素请求服务器端?

ruby-on-rails - 带外部数据库的 Ruby on Rails,网络请求问题

ruby - Paypal Website Payments Pro 通过 Paypal Express Checkout 定期付款 - 他们如何通知我们下次付款?

ruby-on-rails - 如何最好地表示 Rails 应用程序数据库中的角色?

Ruby:计算唯一排列的数量而不使用 .permutation 和数据集中的重复项

ruby-on-rails - "Complex"rails 中的分组和索引?

ruby-on-rails - 在哪些情况下您需要在设计上实现这些复杂的 token 身份验证(Rails 3.2)