CoffeeScript 大寫單詞首字母

2022-06-29 16:48 更新

大寫單詞首字母

問題

你想把字符串中每個單詞的首字母轉(zhuǎn)換為大寫形式。

解決方案

使用“拆分-映射-拼接”模式:先把字符串拆分成單詞,然后通過映射來大寫單詞第一個字母小寫其他字母,最后再將轉(zhuǎn)換后的單詞拼接成字符串。

("foo bar baz".split(' ').map (word) -> word[0].toUpperCase() + word[1..-1].toLowerCase()).join ' '
# => 'Foo Bar Baz'

或者使用列表推導(dǎo)(comprehension),也可以實(shí)現(xiàn)同樣的結(jié)果:

(word[0].toUpperCase() + word[1..-1].toLowerCase() for word in "foo   bar   baz".split /\s+/).join ' '
# => 'Foo Bar Baz'

討論

“拆分-映射-拼接”是一種常用的腳本編寫模式,可以追溯到Perl語言。如果能把這個功能直接通過“擴(kuò)展類”放到String類里,就更方便了。

需要注意的是,“拆分-映射-拼接”模式存在兩個問題。第一個問題,只有在文本形式統(tǒng)一的情況下才能有效拆分文本。如果來源字符串中有分隔符包含多個空白符,就需要考慮怎么過濾掉多余的空單詞。一種解決方案是使用正則表達(dá)式來匹配空白符的串,而不是像前面那樣只匹配一個空格:

("foo    bar    baz".split(/\s+/).map (word) -> word[0].toUpperCase() + word[1..-1].toLowerCase()).join ' '
# => 'Foo Bar Baz'

但這樣做又會導(dǎo)致第二個問題:在結(jié)果字符串中,原來的空白符串經(jīng)過拼接就只剩下一個空格了。

不過,一般來說,這兩個問題還是可以接受的。所以,“拆分-映射-拼接”仍然是一種有效的技術(shù)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號