2017-11-25 139 views
-1

如果我收到的輸入,如:如何從用戶輸入中刪除陣列中的空白區域?

up 1, down 2, down 3, left 5 

我這個保存爲一個數組,它會給我

["up 1", " down 2", " down 3", " left 5"] 

但我需要刪除空格之前向下和向左!

任何想法?

+0

你的輸出是無效的。 – Ilya

+0

'gets.chomp.split(',')#=> [「up 1」,「down 2」,「down 3」,「left 5」]' –

+0

_「我把它保存爲一個數組......」 _ - 如何將輸入轉換爲數組?請顯示你的代碼。 – Stefan

回答

2

您可以使用String#strip

array = ["up 1", " down 2", " down 3", " left 5"] 
p array.map &:strip 
# ["up 1", "down 2", "down 3", "left 5"] 

strip返回海峽的一個副本,開頭和結尾的空格去掉,lstriprstrip的左側或右側做相同的只是分別爲:

p '  ayayayayay  '.strip # "ayayayayay" 
p '  ayayayayay  '.lstrip # "ayayayayay  " 
p '  ayayayayay  '.rstrip # "  ayayayayay" 
3

由於您只想刪除之前某些字符串使用的空白lstrip

返回海峽的副本領先空格刪除。

arr = ["up 1", " down 2", " down 3", " left 5"] 
arr.map(&:lstrip) 
# => ["up 1", "down 2", "down 3", "left 5"] 
1

只是一個想法...

在關機的情況下,你 「接收輸入」 作爲一個字符串,如:你可以做

str = "up 1, down 2, down 3, left 5" 

str.gsub(', ', ',').split(',') 

其中給出:

=> ["up 1", "down 2", "down 3", "left 5"] 

,或者,如果你不是一個白癡(像我一樣),你可以這樣做:

str.split(', ') 

塞巴斯蒂安(很客氣地)指出。

1

如何使用擠壓刪除空格。

["up 1"," down 2", "down 3"," left 5"].map(&:squish) 
0

我需要刪除空格之前向下和向左!

回答確切的問題指出:

["up 1"," down 2"," down 3"," left 5"]. 
    map { |e| e.gsub(/\s+(?=down|left)/, '') } 
#⇒ ["up 1", "down 2", "down 3", "left 5"].