2011-06-05 64 views
1

我有一些问题,用另一个字符串替换字符串的一部分。使用gsub替换

我想将此字符串"this-is-a-string.jpg"替换为"this-is-a-hash.jpg"。 值string可以是任何值。

这是我到目前为止。

str = "this-is-a-string.jpg" 
str.gsub(/([a-z]+)[^\.]+?$/i, "hash") 
# => "this-is-a-string.hash" 
+0

将'这-是-了'保持不变? – 2011-06-05 12:45:44

+0

@Gwilym不,唯一静态的部分是'.jpg'。 – Oleander 2011-06-05 12:56:47

+0

你知道映射是什么吗?即你是否确切地知道什么样的价值观发生了变化? – Jits 2011-06-05 13:02:47

回答

2

rubular玩周围,我想出了,如果你不介意手动添加一个点来替换其工作的正则表达式。
这里是我想出了

"this-is-a-string.jpg".gsub(/\w+\./, 'hash.') 

所以我想你可以做一个简单的功能,它取代它像

def replace_string(string_to_replace, replacement) 
    string_to_replace(/\w+\./, "#{replacement}.") 
end 

红宝石1.9.2我设法提取字“串”但我不知道这对你是否有用。

/[-\w]+\-(?<word>(\w+))\.\w+/ =~ "this-is-a-string.jpg" 
=> 0 
    word 
=> "string" 

我希望我帮助你,给你所需要的信息