Ruby中围绕最后一个字符分割字符串,如何避免出现nil值?
解决方法
以下几种方式可以实现你期望的效果,让分割后第二个变量始终得到空字符串而非nil:
使用
split的分割次数参数
Ruby的split方法支持第二个参数限制分割次数,设置为2时会强制最多分割1次,即使分隔符在字符串末尾,也会保留后面的空字符串:a, b = "1234x".split("x", 2) # a: "1234", b: ""该方式适配所有场景:
a, b = "x2345".split("x", 2) # a: "", b: "2345" a, b = "12x45".split("x", 2) # a: "12", b: "45"使用
partition方法partition会把字符串拆分为「分隔符前的部分、分隔符本身、分隔符后的部分」三个元素的数组,忽略中间的分隔符即可直接取前后部分:a, _, b = "1234x".partition("x") # a: "1234", b: ""所有场景下的表现均符合需求:
a, _, b = "x2345".partition("x") # a: "", b: "2345" a, _, b = "12x45".partition("x") # a: "12", b: "45"手动补全空字符串
在split结果后追加一个空字符串,确保数组至少有两个元素,赋值时自动匹配:a, b = "1234x".split("x") + [""] # a: "1234", b: ""这种方式不会影响正常分割场景,当
split返回两个元素时,追加后的数组虽有三个元素,但赋值仅取前两个。
内容的提问来源于stack exchange,提问作者cpuSonicatt
相关产品推荐
相关产品推荐

