首页 > 解决方案 > Elixir 仅将单词的首字母大写

问题描述

我有一个字符串,我只需要大写第一个字母。我还需要保留任何后续信件的大小写。一开始我以为:

String.capitalize("hyperText") 

会成功的。但除了修复第一个字母外,它还会将其余字母小写。我最终需要的是“超文本”。我最初的通行证是:

<<letter :: utf8, rest :: binary>> = word
upcased_first_letter = List.to_string([letter])
|> String.upcase()

upcased_first_letter <> rest

这工作得很好,但它确实看起来很冗长,也需要做很多工作。我一直觉得有更好的方法。我只是没看到。

标签: stringelixir

解决方案


您可以使用with/1将其保留为单个表达式,并且可以通过在生成的代码点上再次List.to_string使用运算符来避免:<<>>

with <<first::utf8, rest::binary>> <- "hyperText", do: String.upcase(<<first::utf8>>) <> rest

或者把它放在一个函数中:

def upcaseFirst(<<first::utf8, rest::binary>>), do: String.upcase(<<first::utf8>>) <> rest

推荐阅读