我正在尝试使用ruby解析来自bpftrace文件的以下输出。我考虑在'|'上拆分,然后需要从"[4, 8) 824"中获取值需要将这两个值放入数组中我也在考虑使用trim方法,但肯定有更好的方法-也许使用正则表达式请给我一些如何进行的指导好吗?
输入:[4, 8) 824 |@@@@ |

first_array = []
text=File.foreach('/.../test.txt').with_index do |line|
   puts "#{line}"
   values=line.split("|")

   first_array=values[0].split(" ")
   puts first_array

最佳答案

您不需要按'|'拆分,也不需要按框外的非数字拆分:

input = '[4, 8) 824 |@@@@ |'
input.split(/\D+/).reject(&:empty?).map(&:to_i)
#⇒ [4, 8, 824]

或者,正如卡里在评论中建议的那样:
input.scan(/\d+/).map(&:to_i)
#⇒ [4, 8, 824]

10-07 14:56