gpt4 book ai didi

ruby-on-rails - Ruby:Gsub - 一行中的多个字符串替换[在一个数组中]

转载 作者:数据小太阳 更新时间:2023-10-29 08:32:03 24 4
gpt4 key购买 nike

有没有一种方法可以使用 gsub 替换单行数组中的多个字符串。

这是日志文件

13:29:00 (alex) OUT: "72500_2010_0F" abcd@S400532  
13:31:12 (alex) IN: "72600_2010_0F" abnc@S403818
13:31:52 (alex) IN: "71200_2010_0F" osa@S400583

我想替换下面的

(alex) with "" 
OUT: with OUT
IN: with IN
"72500_2010_0F" with XYZ
"71200_2010_0F" with QWE
"72600_2010_0F" with UIO

原始文件(日志文件)被放入数组中,我想读取数组中的每一行并执行gsub。不想使用哈希,因为它太复杂了——作为 Ruby 初学者......& 到正则表达式......

array1.each do |element|
i = element.gsub(/?????????/) [ What should go here]
array2.push(i)
end

我不想对原始数组进行更改,但将修改后的行插入不同的数组,即 array2

执行此操作的最佳且易于理解的代码是什么? - 请帮忙

最佳答案

查看String#sub似乎有很多方法可以做你想做的事:

  1. 一种方法是使用散列作为第二个参数

    def cleansed_log_line(line)
    replacement_rules = {
    'alex' => '',
    'OUT: ' => 'OUT ',
    'IN: ' => 'IN '
    }
    matcher = /#{replacement_rules.keys.join('|')}/

    line.gsub(matcher, replacement_rules)
    end
  2. 另一种方法是使用 block 形式

    def cleansed_log_line(line)
    replacement_rules = {
    'alex' => '',
    'OUT: ' => 'OUT ',
    'IN: ' => 'IN '
    }
    matcher = /#{replacement_rules.keys.join('|')}/

    line.gsub(matcher) do |match|
    replacement_rules[match] || match
    end
    end
  3. 另一个不太好的实现

    def cleansed_log_line(line)
    replacement_rules = {
    /alex/ => '',
    'OUT: ' => 'OUT ',
    'IN: ' => 'IN '
    }

    replacement_rules.each do |match, replacement|
    line = line.gsub(match, replacement)
    end

    line
    end

哈希和正则表达式无需担心。此函数可以清理传递给它的任何行,并返回清理后的行。

关于ruby-on-rails - Ruby:Gsub - 一行中的多个字符串替换[在一个数组中],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com