给定一个HTML字符串,寻找浮动<>

问题描述 投票:0回答:1
的最佳方法是什么

给出HTML字符串:

myhtml = "<title> my title </title>"

如果存在浮点/未转义的true<以及令人反感的字符本身,如何编写返回>的函数?例子:

myhtml = "<title> my title </title>"
hasFloating(myhtml) => false

myhtml = "<title> < </title>"
hasFloating(myhtml) => true, <

myhtml = "<title> > </title>"
hasFloating(myhtml) => true, >

请记住,此字符串可能是其中包含多个元素的巨大HTML代码。我也可以使用一个函数来检查是否存在未转义的字符,第二个函数返回违规字符本身]

编辑:为了记录,我也在该项目中使用mechanize宝石

给出一个HTML字符串:myhtml =“

我的标题”我该如何编写一个函数,如果存在浮动或未转义的以及令人反感的字符,该函数将返回true。 >

[如果您只想检查是否有一个未关闭的尖括号,则不需要精美的宝石。您可以只使用StringScanner

require 'strscan'

def has_floating(html)
  open_angle = 0
  scanner = StringScanner.new(html)
  while scanner.scan(/<|>/)
    case scanner.matched
    when '<'
      return [true, '<'] if open_angle == 1
      open_angle += 1
    when '>'
      return [true, '>'] if open_angle == 0
      open_angle -= 1
    end
    scanner.scan_until(/[^<>]+/)
  end
  return false
end

myhtml = "<title> my title </title>"
puts has_floating(myhtml).inspect
#=> false

myhtml = "<title> < </title>"
puts has_floating(myhtml).inspect
#=> [true, "<"]

myhtml = "<title> > </title>"
puts has_floating(myhtml).inspect
#=> [true, ">"]
ruby mechanize
1个回答
0
投票

[如果您只想检查是否有一个未关闭的尖括号,则不需要精美的宝石。您可以只使用StringScanner

© www.soinside.com 2019 - 2024. All rights reserved.