我试图将一个字符串分成两部分,然后将其分配给两个变量。
当我围绕中间字符之一分割字符串时,它返回:
a, b = *"12x45".split("x")
>> a: "12"
>> b: "45"
Run Code Online (Sandbox Code Playgroud)
当我围绕第一个字符分割字符串时,它返回:
a, b = *"x2345".split("x")
>> a: ""
>> b: "2345"
Run Code Online (Sandbox Code Playgroud)
但是当我围绕最后一个字符分割字符串时,它返回:
a, b = *"1234x".split("x")
>> a: "1234"
>> b: nil
Run Code Online (Sandbox Code Playgroud)
我本来期望的b是""而不是nil。有没有不同的方法来实现这一目标?
split采用可选的第二个参数来限制拆分数量。当此限制设置为 -1 时,其行为类似于“如果 limit 为负数,则其行为与 limit 为 nil 相同,这意味着没有限制,并且包含尾随空子字符串”(来自文档)。所以:
"1234x".split("x", -1) # => ["1234", ""]
Run Code Online (Sandbox Code Playgroud)
如果最多有两部分,您还可以使用partition如果其中一部分“缺失”则默认为空字符串。与此相反,它还返回分隔符作为中间元素:(如果不需要,split可以将其分配给)_
a, _, b = "12x45".partition("x")
a #=> "12"
b #=> "45"
a, _, b = "1234x".partition("x")
a #=> "1234"
b #=> ""
a, _, b = "x2345".partition("x")
a #=> ""
b #=> "2345"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
112 次 |
| 最近记录: |