请原谅,我是Ruby的新手,总体来说我对编程也是比较陌生的。我的问题可能并不难,但我一直在谷歌上搜索,直到我的手指出血,寻找解决方案,但我就是找不到。
我有一行文本,看起来像这样:
6 19 11 28 22 localhost G6UI ip0 cameraLink cameraLinkMissingScans 15116
说了这么多,做了这么多,我希望它看起来像这样:
6.19.2014,11.28.22,localhost,G6UI,ip0,cameraLink cameraLinkMissingScans 15116
我已经在Bash中做到了这一点(我本质上只是做了一个CSV文件,时间和日期按照我想要的方式格式化了),但是,为了解释冗长的原因,我想用Ruby做这件事。
我有一个开始,尽管这可能有点悲哀:
myLineOfText.sub!(/[^-a-zA-Z0-9]/,'\1.\2.')
这给了我这样的结论:
6..19 11 28 22 localhost G6UI ip0 cameraLink cameraLinkMissingScans 15116
任何帮助都会非常感谢,我只是需要一些东西让我开始。
提前谢谢。
发布于 2014-06-20 23:52:36
如果您可以确保格式始终保持不变,则可以执行以下操作:
str.sub!(/(\d+) (\d+) (\d+)/,'\1.\2.\3').gsub!(/ /,',')
示例:
str='6 19 11 28 22 localhost G6UI ip0 cameraLink cameraLinkMissingScans 15116'
str.sub!(/(\d+) (\d+) (\d+)/,'\1.\2.\3').gsub!(/ /,',')
puts str
=> "6.19.11,28,22,localhost,G6UI,ip0,cameraLink,cameraLinkMissingScans,15116"发布于 2014-06-21 00:50:52
对于这样的问题,答案取决于数据格式中哪些是固定的,哪些是可变的。我假设:
与月份和年份相对应,至少有9个子字符串由spaces
dd.mm.2014
连接
我不认为正则表达式是用于格式化的正确工具;而只是将字符串拆分在空格上,并通过使用一系列String#join来形成新的字符串,以显而易见的方式组合得到的子串:
s = "6 19 11 28 22 localhost G6UI ip0 cameraLink cameraLinkMissingScans 15116"
a = s.split(' ')
#=> ["6", "19", "11", "28", "22", "localhost", "G6UI", "ip0", "cameraLink",
# "cameraLinkMissingScans", "15116"]
a[0]+'.'+a[1]+'.2014,'+a[2..4].join('.')+','+a[5..7].join(',')+','+
a[8..-1].join(' ')
#=> "6.19.2014,11.28.22,localhost,G6UI,ip0,cameraLink cameraLinkMissingScans 15116"https://stackoverflow.com/questions/24331068
复制相似问题