如何检查字符串是否包含特定字符,以及它是否只替换该位?

时间:2013-02-25 15:44:14

标签: ruby-on-rails ruby

我想替换包含字符c#的所有字符串,其中包括c#-4.0c#-3.0ms-c#等。

如何查看字符串中是否存在c#,如果存在,只需替换该字符串的c#部分?

即。对于c#-4.0,修改后的字符串将为c%23-4.0。如果使用Ruby核心库的本机方法(比如String的方法之一),那将更为可取。

我尝试了tagname.replace('c%23')但是替换了整个字符串,而不仅仅是匹配模式的子字符串。

思想?

2 个答案:

答案 0 :(得分:2)

使用String gsub方法:

"c#-4.0".gsub!(/c#/, "c%23")

答案 1 :(得分:2)

您可以使用String的gsub方法。 (如果您只想在字符串中替换一次,请使用sub

"hello".gsub(/[aeiou]/, '*')                  #=> "h*ll*"
"hello".gsub(/([aeiou])/, '<\1>')             #=> "h<e>ll<o>"
"hello".gsub(/./) {|s| s.ord.to_s + ' '}      #=> "104 101 108 108 111 "
"hello".gsub(/(?<foo>[aeiou])/, '{\k<foo>}')  #=> "h{e}ll{o}"
'hello'.gsub(/[eo]/, 'e' => 3, 'o' => '*')    #=> "h3ll*"

# in your case :
"some string c#".gsub!('c#', 'c%23')           #=> "some string c%23"