【问题标题】:counting number of replacements done by gsub on an object of class Nokogiri::XML::Text计算 gsub 对 Nokogiri::XML::Text 类对象的替换次数
【发布时间】:2014-10-04 07:16:48
【问题描述】:

我试图在 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的主体部分没有被执行,任何打印语句和count的任何增量操作都没有发生。 即使我尝试在正文中只使用 puts 语句,它也没有打印,尽管这个 gsub 在“str”中做了很多替换

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

【问题讨论】:

    标签: ruby regex nokogiri gsub


    【解决方案1】:

    试试下面的代码 sn-p 而不是你的,

    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

    【讨论】:

    • 这个解决方案实际上并没有反映内容的变化。执行此命令后,内容中匹配模式的字符串被截断
    • 你能提供你的示例内容、模式和replacement_word
    猜你喜欢
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多