string - Elixir 仅将单词的首字母大写
问题描述
我有一个字符串,我只需要大写第一个字母。我还需要保留任何后续信件的大小写。一开始我以为:
String.capitalize("hyperText")
会成功的。但除了修复第一个字母外,它还会将其余字母小写。我最终需要的是“超文本”。我最初的通行证是:
<<letter :: utf8, rest :: binary>> = word
upcased_first_letter = List.to_string([letter])
|> String.upcase()
upcased_first_letter <> rest
这工作得很好,但它确实看起来很冗长,也需要做很多工作。我一直觉得有更好的方法。我只是没看到。
解决方案
您可以使用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