纯粹出于好奇,有没有更优雅的方法可以简单地将子字符串放在字符串中第一个=符号之后?以下是回馈name=bob的工作:

string = "option=name=bob"
string[string.index('=')+1..-1]

只是感觉不太像Ruby .这也适用于:

string.split('=', 2)[1]

再说一次,不是很优雅,尤其是因为split是做额外的不必要的工作.正则表达式就是答案吗?我觉得这有点过分了,因为在字符串中查找单个字符的位置很简单:

string.match('=(.*)')[1]

我不得不想象这是一种非常常见的情况,难道没有一种string.after('=')类型的方法吗?鉴于这种操作在web上的使用频率,Ruby on Rails是否提供了类似的功能?

UPDATE: Forgot to mention the situation when the symbol is not found, nil or empty string should be returned. But the regular expression mechanism and .index method require an extra check for that (so less elegant).

推荐答案

不完全是.after,但非常接近:

string.partition('=').last

http://www.ruby-doc.org/core-1.9.3/String.html#method-i-partition

Ruby相关问答推荐

带有虾Ruby 的动态标题

类似于模块的 attr_accessor 和 attr_reader 的东西?

Ruby:一个方法可以返回不同类型的对象吗?

类 SpecificationPolicy 的超类不匹配

令人惊讶的有效 Ruby 语法:% 无处不在

当没有传入块时,是否有更好的方法来防止屈服?

Rspec: expectvsexpect什么区别?

在 ruby​​ 中调试第三方 gem 的最佳方法

Coffeescript 中等效的 Ruby .times

将 Ruby 哈希转换为 YAML

to_a 和 to_ary 有什么区别?

Ruby 设计模式:如何制作可扩展的工厂类?

如何从 Ruby 判断具有特定 pid 的进程是否正在运行?

确定Ruby的位置

对哈希中数组的值求和

如何修复错误的 URI 不是 URI

了解 ruby​​-prof 输出

判断 Ruby 中是否存在 URL

错误数量的参数(1 代表 0)在 Ruby 中是什么意思?

Ruby中的urldecode?