Ruby 给定一个HTML字符串,查找浮动的最佳方法是什么<&燃气轮机;
给定一个HTML字符串:Ruby 给定一个HTML字符串,查找浮动的最佳方法是什么<&燃气轮机;,ruby,mechanize,Ruby,Mechanize,给定一个HTML字符串: myhtml = "<title> my title </title>" 请记住,这个字符串可能是一段包含多个元素的巨大HTML代码。我还可以使用一个函数检查是否存在未替换的字符,第二个函数返回违规字符本身 编辑:为了记录在案,我还在这个项目中使用mechanizegem如果你只想检查是否有一个未闭合的角括号,你不需要一个漂亮的gem。 您只需使用StringScanner 需要“strscan” def具有浮动(html) 打开角度=0 sc
myhtml = "<title> my title </title>"
请记住,这个字符串可能是一段包含多个元素的巨大HTML代码。我还可以使用一个函数检查是否存在未替换的字符,第二个函数返回违规字符本身
编辑:为了记录在案,我还在这个项目中使用
mechanize
gem如果你只想检查是否有一个未闭合的角括号,你不需要一个漂亮的gem。您只需使用
StringScanner
需要“strscan”
def具有浮动(html)
打开角度=0
scanner=StringScanner.new(html)
while scanner.scan(//)
病例扫描。匹配
当“]”时,如果打开角度==0
开启角-=1
结束
scanner.scanner_直到(/[^]+/)
结束
返回错误
结束
myhtml=“我的标题”
puts具有浮动(myhtml)。检查
#=>错误
myhtml=“<”
puts具有浮动(myhtml)。检查
#=>[正确,”“
puts具有浮动(myhtml)。检查
#=>[正确,“>”]
我不打算进入HTML部分,因为编写HTML解析器本身就是一个项目
只需返回一个数组,就可以返回多个值
def hasFloating(html)
# extract a < or > character surrounded by two spaces
char = html[/(?<= )[<>](?= )/]
[!!char, char] # !!char converts char into a boolean
end
def hasFloating(html)
#提取由两个空格包围的<或>字符
char=html[/(?我想我用nokogiri
gem找到了答案:
htmlStr = Nokogiri::HTML(html).text
# check for < or > in htmlSTR
htmlStr=Nokogiri::HTML(HTML).text
#检查htmlSTR中的<或>
它基本上解析HTML并删除所有标记:
html = <title> < </title>
# parse with nokogiri
=> " < "
html=<
#用nokogiri解析
=> " < "
然后可用于检查浮动。如果要分析HTML,需要一个HTML解析器。问题是如何检查是否有一个角括号没有匹配的对。您的代码检查是否有一个角括号,它的前面和后面是空格
字符。@Adrian这不是全部问题estion是关于“我如何编写一个返回true的函数…,以及有问题的字符本身?”它可能会起作用,但你正在使用武士刀切纸。它不必要地沉重,有时结果不是你想要的。Nokogiri首先解析整个html字符串。我的解决方案只找到第一个未关闭/打开并退出的尖括号。当html字符串很大时,它应该比Nokogiri快得多。
htmlStr = Nokogiri::HTML(html).text
# check for < or > in htmlSTR
html = <title> < </title>
# parse with nokogiri
=> " < "