2016-03-14 95 views
-2

我在做Dir.entries('.') { |e| "<p>#{e}</p>" }來輸出目錄。但是,它會像在bash中一樣打印整個數組。使用`Dir.entries(「。」)從陣列中刪除括號中的單引號和句點`

輸出示例:[".", "..", "162001", "162002", "162003"]

我怎樣才能改變配方去除特殊字符和句正要離開的文本?

編輯:

的例子輸出我想實現的是:
162001
162002
162003
等...什麼我目前得到我的HTML頁面上的

例子並需要消除: 我只需要看到文件夾名稱,沒有別的 enter image description here

+0

你不能。該方法不佔用塊。目前還不清楚你想要做什麼。 – sawa

+0

更新了一下,我需要從輸出中刪除塊字符,引號,逗號和點 – ADL

+0

您可以試試這個'Dir.entries('。'){| e | 「

#{e}

」} .map {| a |一個。gsub(/ [^ 0-9A-Za-z] /,'')}。reject(&:blank?)' –

回答

1

按我的理解,根據你的榜樣,你是指...爲「特殊字符和句」。這些是類Unix的隱藏文件(點文件)。如果要列出除了隱藏文件中的所有文件,您可以使用此:

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 

在這裏,我們拒絕包含任何非字的所有文件名字母,數字和下劃線。

要獲得不同的行字符串輸出:

puts Dir.entries('.').map { |e| "<p>#{e}</p>" if e.delete(' ') =~ /\w/ }.compact.join("\n") 
+0

這擺脫了點和特殊字符的所有文件名是好的,但我仍然需要消除[]和「,」 - 我添加了一個圖像給你,看看什麼我正在做它 – ADL

+0

@ADL'條目'只是迭代 - 你得到的數組名稱回來。使用'join'。 –

+0

@ADL更新了我的答案以生成字符串輸出。 – shivam

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>"} 

外觀joinsplit都具有雙重空間

+0

這看起來優秀的,我需要添加.MAP和

等自有線 – ADL

+0

看看這個編輯一個現在 –

+0

增加了圖像的更詳細的,不幸的是這沒有工作的每個目錄報告=/ – ADL