【发布时间】:2011-12-19 06:55:17
【问题描述】:
a = "foobarfoobarhmm"
我希望输出为 `"fooBARfoobarhmm"
即只有第一次出现的“bar”应该替换为“BAR”。
【问题讨论】:
a = "foobarfoobarhmm"
我希望输出为 `"fooBARfoobarhmm"
即只有第一次出现的“bar”应该替换为“BAR”。
【问题讨论】:
使用#sub:
a.sub('bar', "BAR")
【讨论】:
String#sub 是你所需要的,正如 Yossi 已经说过的那样。但我会改用正则表达式,因为它更快:
a = 'foobarfoobarhmm'
output = a.sub(/foo/, 'BAR')
【讨论】:
要替换第一个匹配项,只需这样做:
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'
【讨论】:
500.to_s 有时写作"500"。 :-)
str[/\d+/] = 500,你会得到一个错误TypeError: no implicit conversion of Fixnum into String。