如果我有短語「紐約市」,我怎樣才能得到每個單詞的第一個字母?我的谷歌搜索僅向我展示瞭如何將每個單詞中的第一個字母大寫,這與我正在嘗試做的看似不同。由於我對Scala的知識有限,我可能會在程序上做到這一點,但我希望有人能夠在我身上釋放一些Scala知識,並向我展示一個描述此問題的函數式方法的示例。如何獲得scala中每個單詞的第一個字母?
8
A
回答
24
所有其他版本工作正常,但爲了避免錯誤格式的字符串失敗(兩個空白連勝,空字符串),使用
"New York City".split(" ").flatMap(_.headOption).mkString
這也適用對於
"New York City".split(" ").flatMap(_.headOption).mkString
甚至
"".split(" ").flatMap(_.headOption).mkString
正如dhg所建議的,人們可能想要使用更合適的正則表達式,例如"\\s+"
。但隨後一個還不如用更合適的東西:
"""\w+""".r.findAllIn("New York City").map(_.head).mkString
(在這裏的/\w+/
應該有希望從病理情況下饒了我們,所以我們可以用.head
版本去。)
13
scala> "New York City".split(" ").map(_.head).mkString
res5: String = NYC
這通過分割「」成單詞的數組。然後,我們映射到該數組,並調用String.head獲取第一個字符。
5
"New York City".split(" ").toList.map(_(0))
給人的字符:
List[Char] = List(N, Y, C)
如果你想有一個字符串中使用mkString
在List[Char]
:
"New York City".split(" ").toList.map(_(0)) mkString
獲得:
String = NYC
4
"New York City".split(" ").map(_.charAt(0))
會給你一個字符數組
2
下面就以替代使用分裂(正則表達式)。
這裏的技巧是使用zip來允許在遍歷字符串時在同一個 迭代中測試當前字符和前一個字符,字邊界由任何以非字母開頭的字母組成。
兩個特殊情況下,第一和最後一個字母,通過1處理)前面加上到其還設置了用於拉鍊 所需的1個字符的歪斜字符串的備份的空間和2)拉鍊截斷部分對。
val s = "\n1New\n\t \t \tYork --City\n\t"
def firstLetters(s: String) = {
" "+s zip s collect {case (w, c) if ! w.isLetter && c.isLetter => c}
}
firstLetters(s)
回報
Vector(N, Y, C)
相關問題
- 1. Swift大寫字母中每個單詞的第一個字母
- 2. 如何找到每個單詞中的第一個字母?
- 3. 獲取句子中每個單詞的第一個字母?
- 4. 如何找到每個單詞的第一個字母?
- 5. Java - 字符串中每個單詞的第一個字母
- 6. 查找字符串中每個單詞的第一個字母
- 7. 打印每個單詞的第一個字母一個句子
- 8. 在CSS中每個單詞的目標第一個字母
- 9. 識別TextBox中每個單詞的第一個字母
- 10. 提取句子中每個單詞的第一個字母
- 11. 列中每個單詞的第一個字母
- 12. 獲取除關鍵詞以外的每個單詞的第一個字母
- 13. 如何替換字符串中每個單詞的第一個字母?
- 14. 使用Javascript獲取字符串中每個單詞的第一個字母
- 15. MYSQL - 大寫每個句子中第一個單詞的第一個字母
- 16. 搜索字串中每個單詞的第一個字母的謂詞
- 17. SQL Server:如何獲取單詞中的第一個或第二個字母?
- 18. 更改每個單詞的第一個字母的值
- 19. jQuery capitilize每個單詞的第一個字母
- 20. SQL - 大寫每個單詞的第一個字母
- 21. 大寫每個單詞的第一個字母斯卡拉
- 22. 大寫每個大寫單詞的第一個字母
- 23. 將每個單詞的第一個字母追加到末尾
- 24. 大寫每個單詞的第一個字母
- 25. 如何打印句子中每個單詞的第一個字母?
- 26. 如何從輸入中輸入的單詞中獲得第一個值(只有第一個字母)
- 27. 如何使一個單詞的第一個字母大寫?
- 28. 匹配單詞的第一個字母
- 29. 紅寶石/正則表達式得到每個單詞的第一個字母
- 30. 將每個單詞的第一個字母轉換爲大寫字母JS
' 「紐約市」 .split( 「\\ S +」)。圖(_。頭)。mkString'沒有'Option'就完成了同樣的目標。 – dhg
@dhg ...但在空字符串上失敗。 – Debilski
你可以過濾掉空的結果,僅保留有效的,這將允許您使用'_.head'方法:'「紐約市」 .split(」「).filterNot(_的isEmpty).MAP(_ .head).mkString' –