替换charachters但不是最后一个

时间:2015-11-27 10:25:29

标签: ruby substitution

我有一个字符串,例如:

str = 'TEST;NAME=1;TARGET_SOMETHING;PLATFORM_INTEL;'

现在我想用";"替换所有"-D"并删除最后";"

我这样做:

str.gsub(/;/, ' -D').gsub(/^/, ' -D')

第二个gsub只是将-D添加到行的开头

结果:

-DTEST -DNAME=1 -DTARGET_SOMETHING -DPLATFORM_INTEL -D

如何告诉Ruby不输出上一个"-D"或删除";"中的最后一个str

有什么建议可以在同一行中进行吗?

2 个答案:

答案 0 :(得分:3)

您可以将splitmap结合使用。

irb(main):012:0> str.split(";").map {|i| "-D#{i}"}.join(" ")
=> "-DTEST -DNAME=1 -DTARGET_SOMETHING -DPLATFORM_INTEL"

答案 1 :(得分:0)

elements= (str.gsub(/;/, ' -D').gsub(/^/, ' -D')).split(' ')

输出将是:

["-DTEST", "-DNAME=1", "-DTARGET_SOMETHING", "-DPLATFORM_INTEL", "-D"]

然后从数组中删除最后一个元素:

elements.delete_at(elements.size-1) 

输出将在元素变量

p elements

["-DTEST", "-DNAME=1", "-DTARGET_SOMETHING", "-DPLATFORM_INTEL"]