我正在Dir.entries('.') { |e| "<p>#{e}</p>" }
输出目录。但是,它会像在bash中一样打印整个数组。
示例输出:[".", "..", "162001", "162002", "162003"]
等
如何更改公式以删除仅留下文本的特殊字符和句点?
编辑:
我想要实现的示例输出是:
162001
162002
162003
等...
答案 0 :(得分:1)
根据我的理解,根据您的示例,您将.
和..
称为“特殊字符和句点”。这些是类Unix的隐藏文件(dotfiles)。如果要列出除隐藏文件以外的所有文件,可以使用:
Dir.glob("*").map { |e| "<p>#{e}</p>" }
或删除所有特殊字符命名文件:
Dir.entries('.').map { |e| "<p>#{e}</p>" if e.delete(' ') =~ /\w/ }.compact #using delete to remove spaces before regex
这里我们拒绝包含除字母,数字和下划线之外的任何字符的所有文件名。
要在单独的行中获取String输出:
puts Dir.entries('.').map { |e| "<p>#{e}</p>" if e.delete(' ') =~ /\w/ }.compact.join("\n")
答案 1 :(得分:0)
你可以试试这种方式
如果您只想要该目录的目录
>> Dir.entries(".").select {|f| File.directory? f}
=> [".", "..", "api_product", "connection_pool", "factory_girl",
e_api", "todo"]
现在删除所有特殊字符
>> Dir.entries(".").select {|f| File.directory? f}.join(" ").gsub!(/[^0-9A-Za-z]/, ' ').strip
=> "api product connection pool factory girl grape lonely lonely batch mysql2 postgres rails rubocop salesforceheroku salesforceheroku2 sidekiq simple api todo"
我想你想要下面的
irb(main):064:0* Dir.entries(".").select {|f| File.directory? f}.join(" ").gsub!(/[^0-9A-Za-z]/, ' ').strip
=> "api product connection pool factory girl grape lonely lonely batch mysql2 postgres rails rubocop salesforceheroku salesforceheroku2 sidekiq simple api todo"
irb(main):065:0> Dir.entries(".").select {|f| File.directory? f}.join(" ").gsub!(/[^0-9A-Za-z]/, ' ').strip
=> "api product connection pool factory girl grape lonely lonely batch mysql2 postgres rails rubocop salesforceheroku salesforceheroku2 sidekiq simple api todo"
irb(main):066:0> Dir.entries(".").select {|f| File.directory? f}.join(" ").gsub!(/[^0-9A-Za-z]/, ' ').strip.split(" ")
=> ["api product", "connection pool", "factory girl", "grape", "lonely", "lonely batch", "mysql2", "postgres", "rails", "rubocop", "salesforceheroku", "salesforceheroku2", "sidekiq", "simple api", "to
do"]
irb(main):067:0> Dir.entries(".").select {|f| File.directory? f}.join(" ").gsub!(/[^0-9A-Za-z]/, ' ').strip.split(" ").map{|c| "<p>"+c+"</p>"}
=> ["<p>api product</p>", "<p>connection pool</p>", "<p>factory girl</p>", "<p>grape</p>", "<p>lonely</p>", "<p>lonely batch</p>", "<p>mysql2</p>", "<p>postgres</p>", "<p>rails</p>", "<p>rubocop</p>",
"<p>salesforceheroku</p>", "<p>salesforceheroku2</p>", "<p>sidekiq</p>", "<p>simple api</p>", "<p>todo</p>"]
这里我用“”双空格分隔两个单词(就像从所有api产品中删除“_”后,连接池将被双倍空格分隔,以便我可以用
和
)
Dir.entries(".").select {|f| File.directory? f}.join(" ").gsub!(/[^0-9A-Za-z]/, ' ').strip.split(" ").map{|c| "<p>"+c+"</p>"}
查看join
和split
都有双倍空格