Ruby on rails Ruby:唯一的数字集

Ruby on rails Ruby:唯一的数字集,ruby-on-rails,ruby,digits,Ruby On Rails,Ruby,Digits,我是Ruby的新手,需要帮助 我有一个.txt的示例部分 Modified : /Analitics/Documents/HTZ/BR-5545 Credit/Example BR-5545.docx Modified : /Analitics/Documents/HTZ/BR-5545 Credit/HTZ BR-5545 Example.docx 我只需要在行中查找数字,并且只需查找一次。(仅出现一次的唯一数字集) 我用regexp查找数字 line=~/(BR-\d*)/ my=line

我是Ruby的新手,需要帮助 我有一个.txt的示例部分

Modified : /Analitics/Documents/HTZ/BR-5545 Credit/Example BR-5545.docx
Modified : /Analitics/Documents/HTZ/BR-5545 Credit/HTZ BR-5545 Example.docx
我只需要在行中查找数字,并且只需查找一次。(仅出现一次的唯一数字集) 我用regexp查找数字

line=~/(BR-\d*)/
my=line.scan(/(BR-\d*)/)
输出:

`[["BR-5545"], ["BR-5545"]]`
但我需要一次:

`[["BR-5545"]`

请帮助我如何转换我的regexp

只需添加
uniq扫描后:

data = "Modified : /Analitics/Documents/HTZ/BR-5545 Credit/Example BR-5545.docx"
data.scan(/(BR-\d*)/).uniq! # [["BR-5545"]

只需添加
uniq扫描后:

data = "Modified : /Analitics/Documents/HTZ/BR-5545 Credit/Example BR-5545.docx"
data.scan(/(BR-\d*)/).uniq! # [["BR-5545"]

给定如下的
input.txt
文件:

Modified : /Analitics/Documents/HTZ/BR-5545 Credit/Example BR-5545.docx
Modified : /Analitics/Documents/HTZ/BR-5545 Credit/HTZ BR-5545 Example.docx
你可以用这个得到你想要的

File.open('input.txt').inject([]) do |array, line|
  array << line.scan(/(BR-\d*)/)
end.flatten.uniq
File.open('input.txt')。inject([])do |数组,行|

数组给定一个
input.txt
文件,如下所示:

Modified : /Analitics/Documents/HTZ/BR-5545 Credit/Example BR-5545.docx
Modified : /Analitics/Documents/HTZ/BR-5545 Credit/HTZ BR-5545 Example.docx
你可以用这个得到你想要的

File.open('input.txt').inject([]) do |array, line|
  array << line.scan(/(BR-\d*)/)
end.flatten.uniq
File.open('input.txt')。inject([])do |数组,行|

数组使用集合而不是数组:

require 'set'
lines=[
    'Modified : /Analitics/Documents/HTZ/BR-5545 Credit/Example BR-5545.docx',
    'Modified : /Analitics/Documents/HTZ/BR-5545 Credit/HTZ BR-5545 Example.docx'
]

lines.inject(Set.new) {|s, l| s.merge(l.scan(/BR-\d+/)); s}
# => #<Set: {"BR-5545"}>

# or as an array
lines.inject(Set.new) {|s, l| s.merge(l.scan(/BR-\d+/)); s}.to_a
# => ["BR-5545"]
require'set'
线条=[
'修改:/Analitics/Documents/HTZ/BR-5545 Credit/Example BR-5545.docx',
'修改:/Analitics/Documents/HTZ/BR-5545 Credit/HTZ BR-5545 Example.docx'
]
lines.inject(Set.new){s,l|s.merge(l.scan(/BR-\d+/);s}
# => #
#或者作为数组
lines.injection(Set.new){s,l|s.merge(l.scan(/BR-\d+/);s}到
#=>[“BR-5545”]

使用集合而不是数组:

require 'set'
lines=[
    'Modified : /Analitics/Documents/HTZ/BR-5545 Credit/Example BR-5545.docx',
    'Modified : /Analitics/Documents/HTZ/BR-5545 Credit/HTZ BR-5545 Example.docx'
]

lines.inject(Set.new) {|s, l| s.merge(l.scan(/BR-\d+/)); s}
# => #<Set: {"BR-5545"}>

# or as an array
lines.inject(Set.new) {|s, l| s.merge(l.scan(/BR-\d+/)); s}.to_a
# => ["BR-5545"]
require'set'
线条=[
'修改:/Analitics/Documents/HTZ/BR-5545 Credit/Example BR-5545.docx',
'修改:/Analitics/Documents/HTZ/BR-5545 Credit/HTZ BR-5545 Example.docx'
]
lines.inject(Set.new){s,l|s.merge(l.scan(/BR-\d+/);s}
# => #
#或者作为数组
lines.injection(Set.new){s,l|s.merge(l.scan(/BR-\d+/);s}到
#=>[“BR-5545”]

谢谢!这对我的排位很有帮助。你能给我一个关于排位栏的建议吗?我是说现在和uniq在一起!我可以在一行中找到一个唯一的。但是如果我有两行的数字是相同的呢?如果这些集合相同,我只需要存在一行,您可以使用
uniq同样适用于那些人:@Priti:因为他正在抓捕。如果正则表达式是
/BR-\d*/
,它就不存在了。我在
正则表达式方面太弱了。。你要开什么药吗?:)非常感谢。这对我的排位很有帮助。你能给我一个关于排位栏的建议吗?我是说现在和uniq在一起!我可以在一行中找到一个唯一的。但是如果我有两行的数字是相同的呢?如果这些集合相同,我只需要存在一行,您可以使用
uniq同样适用于那些人:@Priti:因为他正在抓捕。如果正则表达式是
/BR-\d*/
,它就不存在了。我在
正则表达式方面太弱了。。你要开什么药吗?:)