给定一个输入字符串:
<m>1</m>
<m>2</m>
<m>10</m>
<m>11</m>
我想用 5
替换所有不等于 1
的值。
所以输出字符串应该是这样的:
<m>1</m>
<m>5</m>
<m>5</m>
<m>5</m>
我尝试使用:
gsub(/(<m>)([^1])(<\/m>)/, '\15\3')
但这不会取代 10
和 11
。
最佳答案
#gsub
可以选择获取一个 block 并将替换为该 block 的结果:
subject.gsub(/\d+/) { |m| m == '1' ? m : '5' }
关于Ruby:使用gsub有条件地替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4367216/