我有一个字符串,例如:
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
?
有什么建议可以在同一行中进行吗?
答案 0 :(得分:3)
您可以将split
和map
结合使用。
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"]