你有幾個不確定的變量在你的例子中,這是非常草率的。
each_slice(1)
相當於each()
,所以爲什麼要使用each_slice(1)
目前尚不清楚。在任何情況下,each()
和map()
都逐個遍歷數組中的項目,但each()將原樣返回原始數組。另一方面,當您想要創建一個包含項目更改的新數組時,您使用map()
。
在正則表達式/\w{1,}/
,存在量詞{1, }
一個快捷方式,它是:+
,所以大多數人會寫正則表達式爲/\w+/
,其中+
意味着1 or more
。
-
我想修改某些項目基於正則表達式的數組中,然後 在它與修改的項目返回全陣列。
下面是一個例子:
results = [1, 2, 3].map do |num|
if num == 2
num + 4
else
num - 1
end
end
p results
--output:--
[0, 6, 2]
如果條件失敗,您當前與map()
嘗試不返回任何東西。請注意,上面的示例在條件失敗和條件成功時都會返回一些內容。map()
用該項目返回的內容替換項目。
現在來看看這個例子:
results = [1, 2, 3].map do |num|
if num == 2
num + 4
end
end
p results
--output:--
[nil, 6, nil]
如果你沒有一個項目回報的東西,然後map()
將使用nil
該項目。在該示例中,如果條件num == 2
爲真,則返回num+4
- 但如果num == 2
爲false,則不返回任何內容。
編輯:
words = %w[
page.php?
site=
blah&
id=
1
] #=> words = ["page.php?", "site=", "blah&", "id=", "1"]
suffix = 'hello'
results = words.map do |word|
if word.end_with?('=')
"#{word}#{suffix}"
else
word
end
end
p results
--output:--
["page.php?", "site=hello", "blah&", "id=hello", "1"]
歡迎來到Stack Overflow。請提供一個示例輸入字符串和您的預期輸出。當您對代碼運行不正確的問題時,我們需要能夠複製您所看到的內容,並且我們需要能夠使用同一組數據。請參閱「[問]」。 –
[在匹配子字符串模式後替換URL中的數字]的可能重複(http://stackoverflow.com/questions/33089533/replacing-number-in-url-after-matching-substring-pattern)。這個問題幾乎是相同的,在你的情況下,['URI' Answer](http://stackoverflow.com/a/33089828/1978251)是最好的方法。 – engineersmnky
'items = string.split(/(\ w {1,} =)/)'並且沒有'.each_slice(1).map ...'silliness。 – steenslag