2014-05-24 42 views
-3

我有名字的列表在陣列中的Ruby:紅寶石,解析大寫從名稱的數組字母

names = ["John Smith","Bob Miller"] 

所以我希望做一個正則表達式,並得到這個數組:

namesRegex = ["JS","BM"] 

這是,我從字符串中提取大寫字符,合併它們並將它們放入一個新數組中。

任何幫助表示讚賞。

+3

到目前爲止,你有什麼嘗試?你遇到了什麼問題? – coreyward

回答

1

這是非常簡單的:

names.map { |name| name.gsub(/[^A-Z]/, '') } 

你可以很爽快地構建一個不太優雅,但完全有效地解決了這一問題,它甚至不需要使用正則表達式或映射。

+0

感謝您的解決方案。發生這種情況的原因是,我對.map函數的使用經驗不足,導致我無法爲整個數組實現正則表達式。 – Tripon

0
names.map { |name| name.scan(/\b\w/).*'' } 
+1

不\'w'也匹配非大寫? – EWit

+0

是的,但至少在示例中,所有名稱/單詞都以大寫字母開頭。 –