gpt4 book ai didi

ruby-on-rails - 如何识别和处理文本字符串中的所有 URL?

转载 作者:太空宇宙 更新时间:2023-11-03 16:39:32 24 4
gpt4 key购买 nike

我想枚举一个文本字符串中的所有 URL,例如:

text = "fasòls http://george.it sdafsda"

对于找到的每个 URL,我想调用一个函数 method(...) 来转换字符串。

现在我正在使用这样的方法:

msg = ""
for i in text.split
if (i =~ URI::regexp).nil?
msg += " " + i
else
msg+= " " + method(i)
end
end
text = msg

这可行,但对于长字符串来说速度很慢。我怎样才能加快速度?

最佳答案

我认为“gsub”是你的 friend :

class UrlParser
attr_accessor :text, :url_counter, :urls

def initialize(text)
@text = parse(text)
end

private
def parse(text)
@counter = 0
@urls = []
text.gsub(%r{(\A|\s+)(http://[^\s]+)}) do
@urls << $2
"#{$1}#{replace_url($2)}"
end
end

def replace_url(url)
@counter += 1
"[#{@counter}]"
end
end

parsed_url = UrlParser.new("one http://x.com/url two")
puts parsed_url.text
puts parsed_url.urls

如果你真的需要对长字符串进行额外的快速解析,你应该使用 ragel 构建一个 ruby​​ C 扩展。 .

关于ruby-on-rails - 如何识别和处理文本字符串中的所有 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2123410/

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