纯粹出于好奇,是否有更优雅的方法来简单地获取字符串中第一个=
符号后的子串?以下作品回馈name=bob
:
string = "option=name=bob"
string[string.index('=')+1..-1]
Run Code Online (Sandbox Code Playgroud)
它只是感觉不是非常Ruby.这也有效:
string.split('=', 2)[1]
Run Code Online (Sandbox Code Playgroud)
再次,不是很优雅,特别是因为split
做了额外的不必要的工作.正则表达式是答案吗?我觉得这对于在字符串中查找单个字符位置的简单性来说有点过分:
string.match('=(.*)')[1]
Run Code Online (Sandbox Code Playgroud)
我不得不想象这是一种极为常见的情况,是不是有string.after('=')
类型方法?Ruby on Rails是否提供类似这样的事情,因为在网络上使用这种操作的频率?
更新:忘记在找不到符号时提及情况,nil
或者返回空字符串.但是正则表达式机制和.index
方法需要额外检查(因此不那么优雅).
dim*_*uch 75
不完全.after
,但非常接近:
string.partition('=').last
Run Code Online (Sandbox Code Playgroud)
http://www.ruby-doc.org/core-1.9.3/String.html#method-i-partition
Tho*_*mas 13
还有这种方式:
string.partition('=')[2]
Run Code Online (Sandbox Code Playgroud)
还有这个:
string.sub(/.*?=/, '')
Run Code Online (Sandbox Code Playgroud)
我想我更喜欢你提到的regexp方式.
可能不是 Ruby 方式(有点神秘),但你可以这样做:
string[/=/]
$'
=> "name=bob"
Run Code Online (Sandbox Code Playgroud)
或者
/=/ =~ string
$'
=> "name=bob"
Run Code Online (Sandbox Code Playgroud)
$'
是成功匹配后保存字符串的全局变量。nil
如果没有任何匹配的话也是如此!
归档时间: |
|
查看次数: |
49363 次 |
最近记录: |