草庐IT

实体匹配

全部标签

ruby - 是否存在用于匹配哈希的 RSpec2 匹配器?

future读者请注意:认为RSpec不认为您的哈希值相等?一个可能是OrderedHash,但从常规的RSpec输出中您无法分辨。这就是引发这篇文章的问题。原始问题:假设我有一个规范,我想在其中测试某个方法是否生成了适当的哈希值。it'shouldgeneratetheHashcorrectly'doexpected={:foo=>1,'baz'=>2}subject.some_method_that_should_generate_the_hash.should==expectedend这经常会失败,因为具有相同键值对的不同哈希可能会以不同的顺序返回它们的对。结果如下:Failur

ruby-on-rails - 没有路由匹配 { :controller= >"stocks", :action= >"create"} RSpec Rails 3

我不明白为什么我在运行RSpec时收到此错误消息:Failure/Error:post:createActionController::RoutingError:Noroutematches{:controller=>"stocks",:action=>"create"}controllerstocks存在,actioncreate存在,它应该使用的路由是这样的:match'stocks/:user_id'=>'stocks#create',:via=>:post,:as=>:query路由文件:FruthScreener::Application.routes.drawdoroot:

ruby - 正则表达式匹配 string1,除非前面有 string2

使用Ruby,我如何使用单个正则表达式来匹配“xyyayxy+y”中所有出现的“y”且前面没有x(y,ay,+y)?/[^x]y/也匹配前面的字符,所以我需要一个替代... 最佳答案 您需要一个零宽度的否定后视断言。尝试/(?它准确说明了您要查找的内容,即找到所有“y”前面没有“x”,但不包括前面的字符,即零宽度部分。编辑添加:显然这仅受Ruby1.9及更高版本的支持。 关于ruby-正则表达式匹配string1,除非前面有string2,我们在StackOverflow上找到一个类似的

ruby - Nokogiri 保持 HTML 实体不变

我希望Nokogiri保持HTML实体不变,但它似乎正在将实体转换为实际符号。例如:Nokogiri::HTML.fragment('®').to_s结果:"®"似乎没有任何东西可以将原始HTML返回给我。.inner_html、.text、.content方法都返回'®'而不是'®'有没有办法让Nokogiri保持这些HTML实体不变?我已经搜索过stackoverflow并找到了类似的问题,但没有一个与这个问题完全相同。 最佳答案 这不是一个理想的答案,但您可以通过设置允许的编码来强制它生成实体(如果不是好听的名

ruby - 测试变量是否与多个字符串中的任何一个匹配,而没有长的 if-elsif 链或 case-when

我想在ruby​​中有一种很好的单行方式来表达ifmystr=="abc"or"def"or"ghi"or"xyz"但在我通常查阅的在线引用资料中找不到如何做到这一点...谢谢! 最佳答案 也许你不知道你可以在一个案例上放置多个条件:casemystrwhen"abc","def","ghi","xyz"..end但是对于这个特定的基于字符串的测试,我会使用正则表达式:ifmystr=~/\A(?:abc|def|ghi|xyz)\z/如果您不想构造正则表达式,也不想使用case语句,您可以创建一个对象数组并使用Array#incl

ruby - 返回字符串,直到在 Ruby 中匹配字符串

如何返回"#"或"Apt"的第一个实例之前的字符串部分?我知道我可以根据"#"或"Apt"将字符串拆分成一个数组,然后调用.first,但必须有更简单的方法。 最佳答案 字符串拆分绝对比正则表达式更容易、更易读。对于正则表达式,您需要一个捕获组才能获得第一个匹配项。它将与字符串拆分相同string.split(/#|Apt/,2).first 关于ruby-返回字符串,直到在Ruby中匹配字符串,我们在StackOverflow上找到一个类似的问题: http

ruby - 正则表达式匹配日期

我想匹配格式为mm/dd/yy或mm/dd/yyyy的日期,但它不应选择23/09/2010,其中月份为23,这是无效的,也不应选择无效日期,如00/12/2020或12/00/2011. 最佳答案 比疯狂的巨大Regex更好(假设这是为了验证而不是扫描):require'date'defvalid_date?(str,format="%m/%d/%Y")Date.strptime(str,format)rescuefalseend除了社论:Eww!为什么要使用如此糟糕的日期格式?选择ISO8601,YYYY-MM-DD,这是一个有

ruby - 如何在 Ruby 中进行模糊子串匹配?

我发现了很多关于模糊匹配的链接,将一个字符串与另一个字符串进行比较,看看哪个获得最高的相似度分数。我有一个很长的字符串,它是一个文档,还有一个子字符串。子字符串来自原始文档,但已被多次转换,因此可能引入了奇怪的人工制品,例如这里有一个空格,那里有一个破折号。子字符串将与原始文档中的一段文本匹配99%或更多。我不匹配以查看该字符串来自哪个文档,我试图在文档中找到该字符串开始的索引。如果字符串是相同的,因为没有引入随机错误,我会使用document.index(substring),但是即使只有一个字符差异,这也会失败。我认为可以通过删除字符串和子字符串中除a-z之外的所有字符来解决差异,

Ruby regex- gsub 存储它匹配的内容吗?

如果我用.gsub(/matchthisregex/,"replace_with_this")gsub是否将它与正则表达式匹配的内容存储在某处?我想在我的替换字符串中使用它匹配的内容。例如像"replace_with_"+matchedregexstring+"this"在我上面的例子中,matchedregexstring是来自gsub的存储匹配吗?抱歉,如果这让我感到困惑,我不知道还能怎么说。 最佳答案 来自finemanual:IfreplacementisaStringitwillbesubstitutedforthemat

ruby - Rspec 匹配哈希数组

我有一个哈希数组,为了便于论证,它看起来像这样:[{"foo"=>"1","bar"=>"1"},{"foo"=>"2","bar"=>"2"}]使用Rspec,我想测试"foo"=>"2"是否存在于数组中,但我不关心它是第一项还是第二项。我试过:[{"foo"=>"1","bar"=>"2"},{"foo"=>"2","bar"=>"2"}].shouldinclude("foo"=>"2"))但这行不通,因为哈希值应该完全匹配。有什么方法可以部分测试每个散列的内容吗? 最佳答案 怎么样?hashes=[{"foo"=>"1","