替换字符但不是最后一个

substitute characters but not the last one

我有一个这样的字符串:

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中的最后一个";"

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

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"]

您可以为此组合使用 splitmap

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