为什么Ruby String#split不将连续的尾随分隔符视为单独的实体?
发布时间:2020-12-16 21:27:04 所属栏目:百科 来源:网络整理
导读:我正在从政府文本文件中读取$作为分隔符,但我不认为分隔符字符很重要 所以这是预期的: 'a$b$c$d'.split('$')# = ["a","b","c","d"] 在我正在使用的数据文件中,列标题行(第一行)被均匀填充,即没有空标题,如: 'a$b$$d'# or: 'a$b$c$' 但是,每行可能具有连续
我正在从政府文本文件中读取$作为分隔符,但我不认为分隔符字符很重要
所以这是预期的: 'a$b$c$d'.split('$') # => ["a","b","c","d"] 在我正在使用的数据文件中,列标题行(第一行)被均匀填充,即没有空标题,如: 'a$b$$d' # or: 'a$b$c$' 但是,每行可能具有连续的后跟分隔符,例如: "w$x$$rn" 通常,我读取每一行并且chomp它.但是这会导致String#split将最后两个分隔符视为一列: "w$x$$rn".chomp.split('$') # => ["w","x"] 不做chomp会让我想要的结果,虽然我应该chomp最后一个元素: "w$x$$rn".split('$') # => ["w","x","","rn"] 所以我必须: >如果最终的非换行符不是连续的分隔符,请选中该行 这似乎真的很尴尬…我在这里错过了什么? 解决方法
您需要传递一个负值作为第二个参数进行拆分.这样可以防止它阻止尾随的空字段:
"w$x$$rn".chomp.split('$',-1) # => ["w",""] 见the docs on (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |