【问题标题】:How do I avoid trailing empty items being removed when splitting strings?如何避免在拆分字符串时删除尾随空项?
【发布时间】:2011-03-27 22:55:54
【问题描述】:

我在做:

"b::::c:::".split(':')

结果:

["b", "", "", "", "c", "", ""] # expect
["b", "", "", "", "c"] # actual

这里有什么问题?我怎样才能得到我所期望的。

【问题讨论】:

  • 仅供参考,这里是String#split的文档。
  • 这是一个很好的问题。我彻底阅读了 String#split 并且对这个感到摸不着头脑。
  • 一种保留尾随空字符串的黑客方法:("b::::c:::" + ':cat').split(':')[0..-2] #=> ["b", "", "", "", "c", "", "", ""].

标签: ruby


【解决方案1】:

limit 有一个 .split(pattern=$;, [limit]) 参数。如果limit 被省略,尾随空字段被抑制。您需要提供否定的limit

"b::::c:::".split(':', -1) 

但请记住,这将在数组末尾返回三个 "" 值。

result: ["b", "", "", "", "c", "", "", ""] 

【讨论】:

  • 老实说,我认为这个问题需要更多的关注。真的很难找到,我几乎问了同样的问题。
  • 阅读本文了解更多关于 ruby​​ split @gfxmonk.net/2011/09/04/…
  • 您的第二句话在您发布答案八年后的今天split 的最新文档中逐字出现。我已经在各种上下文中看到过“null”这个词,但从未在 Ruby 文档中找到它的定义。我想知道他们为什么不说"...trailing empty strings are suppressed"。很好的答案。
猜你喜欢
  • 1970-01-01
  • 2023-02-10
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-17
  • 2014-10-12
  • 2018-09-26
相关资源
最近更新 更多