Ruby'资本化!'悖论

时间:2008-11-19 23:44:11

标签: ruby

在Ruby中,我们有'bang'方法capitalize!,如果没有对字符串进行任何更改,则会返回nil的奇怪行为。

这意味着我无法将这些命令与其他命令链接起来,因为它会在链返回nil时有效地销毁链。

我想做的是这样的事情:

fname =  fullname[0...fullname.index(' ')].capitalize!

从字符串中提取名字,也应该将其大写。但如果它已经大写,那么fname中存储的字符串就是nil

在课程中,我可以添加另一个声明但是想知道是否有办法在不破坏链条的情况下执行此操作。

2 个答案:

答案 0 :(得分:17)

使用.capitalize(没有爆炸) - 除非您确实需要它来更改来源。

答案 1 :(得分:7)

由于您的语句不会更改fullname的值,只需执行:

fname =  fullname[0...fullname.index(' ')].capitalize

如果没有更改,则不返回nil。