0

我有一个方法,例如:

def change(string)
  return string
end

将在传入的字符串流上多次调用方法更改,例如:

1367 INFO sslsniff : Certificate Ready: test.neocal.info
1367 DEBUG sslsniff : New source 172.16.23.121:47864 <-> destination 54.241.163.174:443
1367 INFO sslsniff : Certificate Ready: test.neocal.info
1367 DEBUG sslsniff : New source 172.16.23.121:47882 <-> destination 54.241.163.174:443
1367 DEBUG sslsniff : New source 172.16.23.121:47883 <-> destination 54.241.163.174:443
1367 DEBUG sslsniff : New source 172.16.23.121:47884 <-> destination 54.241.163.174:443

我想进行更改,以便每当读入包含Certificate Ready: test.neocal.info的行时,我想对其进行更改以使其返回整行,但它将“ test.neocal.info ”替换为字符串' voidparse '。

我的尝试是:

def change(string)
  arr = string.split(':')
  if arr[1] == " Certificate Ready"
    arr[2] == "nullvoid"
  end
  # it's this part i'm stuck--how can i rebuild the string with the modified array?
  return string
end
4

2 回答 2

0

只需将String#gsub与以下内容一起使用:

def change(line)
  return line.gsub(/Certificate Ready: test.neocal.info/,"Certificate Ready:voidparse")
end

它将替换该行中的所有出现,并返回结果字符串。

于 2013-05-03T10:55:06.547 回答
0

您可以使用gsub

def change(string)
  string.gsub(/Certificate Ready: (.+)/, "Certificate Ready: voidparse")
end

如果您愿意,也可以使用就地更改字符串gsub!

def change(string)
  string.gsub!(/Certificate Ready: (.+)/, "Certificate Ready: voidparse")
  string
end
于 2013-05-03T10:58:03.103 回答