如果我有短语“纽约市”,我怎样才能得到每个单词的第一个字母?我的谷歌搜索仅向我展示了如何将每个单词中的第一个字母大写,这与我正在尝试做的看似不同。由于我对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' –