2011-06-05 3 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

будет 'это-это-a' остаются теми же? –

+0

@ Gwilym Нет, единственная статичная часть - '.jpg'. – Oleander

+0

Знаете ли вы, что такое отображения? То есть Знаете ли вы, какие значения меняются, и что? – Jits

ответ

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" 

Я надеюсь, что я помог вам и дал информацию, необходимую

Смежные вопросы