相关疑难解决方法(0)

如何在拆分字符串时避免追踪删除的空项目?

我在做:

"b::::c:::".split(':')
Run Code Online (Sandbox Code Playgroud)

结果:

["b", "", "", "", "c", "", ""] # expect
["b", "", "", "", "c"] # actual
Run Code Online (Sandbox Code Playgroud)

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

ruby

9
推荐指数
1
解决办法
301
查看次数

从String#split返回零长度字符串

在Ruby 1.9.3(可能是早期版本,不确定)中,我试图弄清楚为什么Ruby的String#split方法给了我一定的结果.我得到的结果似乎与我期望的相反.这是一个例子:

"abcabc".split("b") #=> ["a", "ca", "c"]
"abcabc".split("a") #=> ["", "bc", "bc"]
"abcabc".split("c") #=> ["ab", "ab"]
Run Code Online (Sandbox Code Playgroud)

这里,第一个示例正好返回我期望的内容.

但是在第二个例子中,我很困惑为什么#split返回一个零长度字符串作为返回数组的第一个值.这是什么原因?这是我所期望的:

"abcabc".split("a") #=> ["bc", "bc"]
Run Code Online (Sandbox Code Playgroud)

在同一行,为什么在第三个例子中没有返回拖尾的零长度字符串?如果第二个示例返回一个零长度字符串作为它的第一个值,那么最后一个示例应该返回与它的最后一个值相同的值.

启发我,我在这里失踪了什么?

编辑:进一步了解它,我意识到为什么这是默认行为以及为什么我的想法完全错误.例如,如果我们要浏览CSV文件,在每列上拆分,我们的数据就会被抛弃,因为会忽略空的前导列.

另外值得注意的是,这个问题与Ruby无关 - 我知道许多其他语言的行为完全相同.当我得知这个时,我只是简单地使用Ruby.

ruby

5
推荐指数
2
解决办法
273
查看次数

String#拆分奇怪的行为

我观察了一个奇怪的split方法行为String.

"1..2".split('..')      # => ['1', '2']
"1..2".split('..', 2)   # => ['1', '2']

"..2".split('..')       # => ['', '2']
"..2".split('..', 2)    # => ['', '2']
Run Code Online (Sandbox Code Playgroud)

一切都像预期,但现在:

"1..".split('..')       # => ['1']
"1..".split('..', 2)    # => ['1', '']
Run Code Online (Sandbox Code Playgroud)

我希望第一个与第二个相同.

有没有人有一个很好的解释,为什么只"1..".split('..')返回一个只有一个元素的数组?或者它是Ruby的不一致?你觉得怎么样?

ruby

3
推荐指数
1
解决办法
208
查看次数

Ruby .split行为不一致

假设我有这个:

a = "|hello"
Run Code Online (Sandbox Code Playgroud)

如果我做:

a.split("|") #=> ["", "hello"]
Run Code Online (Sandbox Code Playgroud)

现在说我有:

b = "hello|"
Run Code Online (Sandbox Code Playgroud)

如果我做:

b.split("|") #=> ["hello"]
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我期待结果["hello", ""],类似于第一个例子.这种split方法工作不一致.或者是否有一些我不了解的内在工作?

ruby

2
推荐指数
1
解决办法
75
查看次数

标签 统计

ruby ×4