首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从字符串中提取数字并使用它们从YAML文件中提取

如何从字符串中提取数字并使用它们从YAML文件中提取
EN

Stack Overflow用户
提问于 2016-08-12 23:07:04
回答 1查看 288关注 0票数 1

我正在尝试从字符串中提取整数,并使用它们扫描YAML文件,如下所示:

代码语言:javascript
复制
FORMS = YAML.load_file('../email/lib/lists/form_links.yml')

def get_form(form)
  form_num = form.scan(/\d+/)
  data = FORMS['esd_forms'][form_num]
  begin
    if data != nil
      "Form link: #{data}"
    else
      raise StandardError
    end
  rescue StandardError
    "** Form: #{form} is not a valid form name **"
  end
end

YAML文件:

代码语言:javascript
复制
esd_forms:
  1: 'http://labornet.com/itc/ESD-1.pdf'
  2: 'http://labornet.com/itc/ESD-2.pdf'
  3: 'http://labornet.com/itc/ESD-3.pdf'
  4: 'http://labornet.com/itc/ESD-4.pdf'
  5: 'http://labornet.com/itc/ESD-5.pdf'
  6: 'http://labornet.com/itc/ESD-6.pdf'
  7: 'http://labornet.com/itc/ESD-7.pdf'
  8: 'http://labornet.com/itc/ESD-8.pdf'
  9: 'http://labornet.com/itc/ESD-9.pdf'
  10: 'http://labornet.com/itc/ESD-10.pdf'
  11: 'http://labornet.com/itc/ESD-11.pdf'
  03: 'http://labornet.com/itc/OCIO-IT-03.pdf'
  07: 'http://labornet.com/itc/OCIO-IT-07.pdf'
  10: 'http://labornet.com/itc/OCIO-10.pdf'
  13: 'http://labornet.com/itc/ESD-13.pdf'
  14: 'http://labornet.com/itc/ESD-14.pdf'

当我这样做时,我得到一个错误:

代码语言:javascript
复制
wrong argument type Array (expected Regexp)

我不明白为什么我会得到这个错误。起初,我认为这是因为程序返回的是数组而不是字符串,所以我在IRB中尝试了一下:

代码语言:javascript
复制
irb(main):001:0> form = 'esd-2'
=> "esd-2"
irb(main):002:0> form_num = form.scan(/\d+/)
=> ["2"]
irb(main):003:0> puts form_num
2

对我来说,似乎我这样做是正确的。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-12 23:14:28

String#scan以数组的形式返回字符串中与正则表达式匹配的所有匹配项。

在irb会话中,当您执行form_num = form.scan(/\d+/)时,它实际上返回一个只有1个元素["2"]的数组。

如果想要返回第一个匹配的段,可以使用String#[]

代码语言:javascript
复制
form = 'esd-2'
form_num = form[/\d+/]
#=> "2"

此外,如果需要检查变量中存储的内容,p将是比puts更好的选择。irb实际上在默认情况下使用p输出表达式结果,正如您在irb会话中看到的那样。

代码语言:javascript
复制
form = 'esd-2'
form_num = form.scan(/\d+/)
puts form_num
#=> 2
p form_num
#=> ["2"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38921132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档