这是我原来的字符串:
"Chassis ID TLV\n\tMAC: 00:xx:xx:xx:xx:xx\nPort ID TLV\n\tIfname: Ethernet1/3\nTime to Live TLV\n\t120"
我想将字符串格式化为:
"Chassis ID TLV;00:xx:xx:xx:xx:xx\nPort ID TLV;Ethernet1/3\nTime to Live TLV;120"
所以我使用了以下ruby字符串函数来执行此操作:
y = x.gsub(/\t[a-zA-Z\d]+:/,"\t")
y = y.gsub(/\t /,"\t")
y = y.gsub("\n\t",";")
所以我正在寻找一个单行班轮来做上述事情。因为我不习惯正则表达式,所以我尝试按顺序进行。当我尝试将它们全部放在一起时,我搞砸了。
答案 0 :(得分:5)
答案 1 :(得分:4)
我将其作为一些较小的步骤来解决它:
input = "Chassis ID TLV\n\tMAC: 00:xx:xx:xx:xx:xx\nPort ID TLV\n\tIfname: Ethernet1/3\nTime to Live TLV\n\t120"
input.split(/\n\t?/).map { |s| s.sub(/\A[^:]+\:\s*/, '') }.join(';')
# => "Chassis ID TLV;00:xx:xx:xx:xx:xx;Port ID TLV;Ethernet1/3;Time to Live TLV;120"
通过这种方式,您可以控制每个元素,而不是完全依赖于正则表达式来执行此操作。