博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ruby 正则表达式Regexp
阅读量:6840 次
发布时间:2019-06-26

本文共 1688 字,大约阅读时间需要 5 分钟。

 

Regexp

Regexp holds a regular expression, used to match a pattern against strings. Regexps are created using the /.../ and %r{...} literals, and by the Regexp::new constructor.

Regular expressions (regexps) are patterns which describe the contents of a string. They’re used for testing whether a string contains a given pattern, or extracting the portions that match. They are created with the /pat/ and %r{

pat} literals or theRegexp.new constructor.

A regexp is usually delimited with forward slashes (/). For example:

/hay/ =~ 'haystack'   #=> 0/y/.match('haystack') #=> #
=~ is Ruby's basic pattern-matching operator. When one operand is a regular expression and the other is a string then the regular expression is used as a pattern to match against the string. (This operator is equivalently defined by  and so the order of  and  do not matter. Other classes may have different implementations of =~.) If a match is found, the operator returns index of first match in string, otherwise it returns nil.
/hay/ =~ 'haystack'   #=> 0'haystack' =~ /hay/   #=> 0/a/   =~ 'haystack'   #=> 1/u/   =~ 'haystack'   #=> nil /ay/ =~'hay' #=> 1

 

=~执行完如果匹配到了,返回第一个匹配位置的index索引值,0在ruby里为true,如果没有匹配到,返回nil, 在ruby里,只有nil和false为false.其他的都为true
测试一下:
irb(main):011:0> /hay/ =~ 'hayaaa'=> 0irb(main):012:0> /hayaaaaa/ =~ 'hayaaa'=> nilirb(main):013:0> /t/ =~ 'hayaaa'=> nilirb(main):014:0> p 'tesdt' if 0"tesdt"=> "tesdt"

这时候可以写了

app/helpers/packages_helper.rb

def youku_image_url(url)  /http:\/\// =~ url ? url : "http://r#{rand(4) + 1}.ykimg.com/#{url}"end

_form.html.erb

<%= image_tag youku_image_url(@package.app_icon), :width => 150 %>

 

 

 

 

 

 

转载于:https://www.cnblogs.com/iwangzheng/p/3786382.html

你可能感兴趣的文章