Ruby - заменить первое вхождение подстроки другой строкой - PullRequest
57 голосов
/ 01 ноября 2011

a = "foobarfoobarhmm"

Я хочу вывод как `" fooBARfoobarhmm "

т.е. только первое вхождение "bar" следует заменить на "BAR".

Ответы [ 3 ]

109 голосов
/ 01 ноября 2011

Использование #sub:

a.sub('bar', "BAR")
16 голосов
/ 01 ноября 2011

String#sub - это то, что вам нужно, как уже сказал Йосси. Но вместо этого я бы использовал Regexp, так как он быстрее:

a = 'foobarfoobarhmm'
output = a.sub(/foo/, 'BAR')
8 голосов
/ 12 мая 2014

чтобы заменить первое вхождение, просто сделайте это:

str = "Hello World"
str['Hello'] = 'Goodbye'
# the result is 'Goodbye World'

Вы даже можете использовать регулярные выражения:

str = "I have 20 dollars"
str[/\d+/] = 500.to_s
# will give 'I have 500 dollars'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...