【发布时间】:2012-12-28 18:04:00
【问题描述】:
纯粹出于好奇,有没有更优雅的方法来简单地获取字符串中第一个 = 符号之后的子字符串?以下作品回馈name=bob:
string = "option=name=bob"
string[string.index('=')+1..-1]
感觉不是很Ruby。这也有效:
string.split('=', 2)[1]
再一次,不是很优雅,尤其是因为split 正在做额外的不必要的工作。正则表达式是答案吗?对于在字符串中查找单个字符位置的简单性,我觉得这有点矫枉过正:
string.match('=(.*)')[1]
我不得不想象这是一个非常普遍的情况,不是有string.after('=') 类型的方法吗?考虑到这种操作在网络上的使用频率,Ruby on Rails 是否提供了类似的功能?
UPDATE:忘了说找不到符号的情况,应该返回nil或者空字符串。但是正则表达式机制和.index 方法需要额外检查(不太优雅)。
【问题讨论】:
-
小字符串上的小正则表达式真的真的快。
-
@AlexWayne - 这让我感觉好多了:),但我想我必须考虑到找不到 = 符号的情况。
-
“更优雅的方式...”问题应在codereview.stackexchange.com提出