如何从数组中删除所有\
元素?
大小为 6 的数组:
data =
[
" \"\"http://www.web1.com\\\"",
"\"",
" \"\"https://www.web2.com\\\"",
"\"",
" \"\"http://www.web3.com\\\"",
"\"",
]
期望:
["www.web1.com", "www.web2.com", "www.web3.com"]
尝试过:
data =
=> [" \"\"http://www.web1.com\\\"", "\"", " \"\"https://www.web2.com\\\"", "\"", " \"\"http://www.web3.com\\\"", "\""]
2.0.0-p353 :019 > data.each do |d|
2.0.0-p353 :020 > d.gsub!(/\+/,'')
2.0.0-p353 :021?> end
=> [" \"\"http://www.web1.com\\\"", "\"", " \"\"https://www.web2.com\\\"", "\"", " \"\"http://www.web3.com\\\"", "\""]
2.0.0-p353 :022 >
最佳答案
以下是获得所需输出的方法:
data.map { |e| e.gsub(/["\s\\\/]|(?:https?:\/\/)/,'') }.reject(&:empty?)
您迭代数据数组并将与正则表达式匹配的元素内容替换为 ''
。然后你只需删除空字符串即可。
让我解释一下正则表达式:[...]
表示字符组,我们将匹配该组中的任何字符; |
是or
运算符; (?:)
是非捕获组,因此我们必须匹配整个 https://
或 http://
; \s
表示任意空白字符; \\
和 \/
被转义 \
和 /
。
关于ruby - 如何 gsub\in ruby 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22091572/