计算gsub对类Nokogiri :: XML :: Text的对象所做的替换次数

时间:2014-08-11 12:46:25

标签: ruby regex nokogiri gsub

我试图用一个字符串替换一个给定的模式,该对象是使用ruby中的gsub的Nokogiri :: XML :: Text类。请参阅下面的命令

#str is of class Nokogiri::XML::Text
str.content = str.content.gsub(pattern,replacing_word)

现在我想用每个替换品打印一些东西,也想知道gsub做的替换次数,所以我写了下面的命令

count = 0
str.content = str.content.gsub(pattern,replacing_word) { count += 1
puts "some text"}

上面的命令正在用replacement_string替换给定的模式,但gsub的正文部分没有被执行,任何打印语句和计数的任何增量操作都没有发生。 即使我尝试将just语句放入正文中,然后它也不会打印,尽管这个gsub在" str"

中做了很多替换。

如果有人知道这个gsub命令有什么问题,请告诉我。

1 个答案:

答案 0 :(得分:3)

尝试以下代码段而不是你的代码片段,

content = content.gsub(pattern) {|m| count +=1; m.replace(replacing_word)}

我的测试代码

#!/usr/bin/env ruby
pattern = "a";
content = "abaccaa"
replacing_word = "z"
count = 0
content = content.gsub(pattern) {|m| count +=1; m.replace(replacing_word)}
puts content;
puts count;

输出

zbzcczz
4

- SJ