gpt4 book ai didi

ruby - 为什么 Ruby String#split 不将连续的尾随分隔符视为单独的实体?

转载 作者:太空宇宙 更新时间:2023-11-04 10:13:00 24 4
gpt4 key购买 nike

我正在读取政府文本文件,其中 $ 用作分隔符,但我认为分隔符字符并不重要...

所以这是预期的:

'a$b$c$d'.split('$')
# => ["a", "b", "c", "d"]

在我正在使用的数据文件中,列标题行(第一行)被统一填充,即没有空标题,如下所示:

'a$b$$d'
# or:
'a$b$c$'

但是,每行可能有连续的尾随分隔符,例如:

"w$x$$\r\n"

通常,我会阅读每一行并咀嚼它。但这会导致 String#split 将最后两个分隔符视为一列:

"w$x$$\r\n".chomp.split('$')
# => ["w", "x"]

不进行 chomp 操作可以获得所需的结果,尽管我应该 chomp 最后一个元素:

"w$x$$\r\n".split('$')
# => ["w", "x", "", "\r\n"]

所以我必须:

  • 如果最后的非换行符不是连续的分隔符,则截断该行
  • 保留换行符,进行分割,然后如果最后的字符是连续分隔符,则截断最后的元素

这看起来真的很尴尬......我在这里错过了什么吗?

最佳答案

您需要将负值作为第二个参数传递给split。这可以防止它抑制尾随空字段:

"w$x$$\r\n".chomp.split('$', -1)
# => ["w", "x", "", ""]

参见the docs on split .

关于ruby - 为什么 Ruby String#split 不将连续的尾随分隔符视为单独的实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52095296/

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