2011-06-05 62 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" 

我希望我幫助你,給你所需要的信息