2014-03-03 17 views

回答

6

使用正則表達式:

"world is a better place".scan(/\b[a-z]/i).join 
# => "wiabp" 
"world is a better place".scan(/\b[a-z]/i).join.upcase 
# => "WIABP" 

\b單詞邊界匹配。 (在單詞字符和非單詞字符之間)。 [a-z]匹配任何字母。

\b[a-z]匹配單詞的第一個字母表字母。

備註如果有以非字母字符開頭的單詞(?),上面的代碼將不起作用。如果有一個詞包含標點符號,也不起作用。 (例如:World is 1 better-place.

UPDATE

使用String#gsub與捕獲組,你會得到相同的結果:

"world is a better place".gsub(/\s*(\S)\S*/, '\1').upcase 
# => "WIABP" 
+1

還要注意,好像有,有一個空格或連字符單詞在裏面。 – sawa

+0

@sawa,謝謝你指出。我在說明中加入了這一點。還增加了一個替代方案。 – falsetru

相關問題