替换字符但不是最后一个
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"]
您可以为此组合使用 split
和 map
。
irb(main):012:0> str.split(";").map {|i| "-D#{i}"}.join(" ")
=> "-DTEST -DNAME=1 -DTARGET_SOMETHING -DPLATFORM_INTEL"
我有一个这样的字符串:
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"]
您可以为此组合使用 split
和 map
。
irb(main):012:0> str.split(";").map {|i| "-D#{i}"}.join(" ")
=> "-DTEST -DNAME=1 -DTARGET_SOMETHING -DPLATFORM_INTEL"