ssc*_*rus 4 string ruby-on-rails ruby-on-rails-3
有没有一种简单的方法将以下逻辑应用于Rails中的字符串?
if string does NOT end with '.' then add '.'
if string does NOT begin with 'http://' then add 'http://'.
Run Code Online (Sandbox Code Playgroud)
当然,有人可能会这样做:
string[0..6] == 'http://' ? nil : (string = 'http://' + string)
Run Code Online (Sandbox Code Playgroud)
但它有点笨重,它会错过https://
替代方案.是否有更好的Rails方法来做到这一点?
pdu*_*uey 14
正则表达式是关键,但对于简单的静态字符串匹配,您可以使用更快的辅助函数.此外,您可以使用<<而不是+,这也更快(尽管可能不是一个问题).
string << '.' unless string.end_with?( '.' )
string = 'http://' << string unless string.start_with?( 'http://' )
Run Code Online (Sandbox Code Playgroud)
注意,s将包含正确的值,但如果字符串未更改,则返回值为nil.不是你会,但最好不要包含在有条件的.
就像是
string = "#{string}." unless string.match(/\.$/)
string = "http://#{string}" unless string.match(/^https?:\/\//)
Run Code Online (Sandbox Code Playgroud)
应该管用.
归档时间: |
|
查看次数: |
8439 次 |
最近记录: |