0

次のような方法があります。

def change(string)
  return string
end

メソッドchangeは、次のような文字列の着信ストリームで複数回呼び出されます。

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 を文字列「ボイドパース」。

私の試みは:

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

使用できます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 に答える
0

次のようなものでString#gsubを使用するだけです:

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

行内のすべての出現を置き換え、結果の文字列を返します。

于 2013-05-03T10:55:06.547 に答える