String Elixir upcase仅用于单词的第一个字母
我有一个字符串,我只需要将第一个字母大写。我还需要保留任何后续信件的情况。起初我想:String Elixir upcase仅用于单词的第一个字母,string,elixir,String,Elixir,我有一个字符串,我只需要将第一个字母大写。我还需要保留任何后续信件的情况。起初我想: String.capitalize("hyperText") 我会成功的。但除了固定第一个字母外,它还降低了其余字母的大小写。我需要的是“超文本”。我在这里的第一个通行证是: <<letter :: utf8, rest :: binary>> = word upcased_first_letter = List.to_string([letter]) |> String.up
String.capitalize("hyperText")
我会成功的。但除了固定第一个字母外,它还降低了其余字母的大小写。我需要的是“超文本”。我在这里的第一个通行证是:
<<letter :: utf8, rest :: binary>> = word
upcased_first_letter = List.to_string([letter])
|> String.upcase()
upcased_first_letter <> rest
=word
upcased_first_letter=List.to_字符串([字母])
|>String.upcase()
大写首字母剩余
这项工作非常完美,但看起来确实有很多冗长的内容,也有很多工作要做。我一直觉得有更好的方法。我只是没看到。如果你只是在升级英文字母表,你可以在比赛中加入一个简单的保护条款。一个匿名函数示例,虽然命名为或使用或其他东西命名为:
iex>cap_first=fn
当第一次在?a…?z->
…>字符串->字符串
结束
iex>cap_优先(“超文本”)
“超文本”
您可以使用将其保留为单个表达式,并且可以避免使用列表。要使用字符串,请在生成的代码点上再次使用
运算符:
使用一种方法:
iex(10)> Macro.camelize("hyperText")
"HyperText"
这可能更兼容UTF-8?不确定有多少个字母是多个代码点,但这似乎比假设一个字母将有多少字节要安全一些
iex(6)>带[first | rest][String.capitalize(first)| rest]|>Enum.join()
…(6)>结束
“Βool”
iex(7)>对于[first | rest],我建议大家感兴趣,谢谢:)不幸的是,我正在做一个练习,需要从Macro.camelize的文档中编写所有的w/o库等。camelize:“不要将它用作camelize字符串的一般机制,因为它不支持Unicode或Elixir标识符中无效的字符”。可能值得一提的是:OP使用
的方法是unicode安全的,并且不会对字符中的字节数进行任何假设。是的,这对我来说不起作用……但是(这是一个大屁股),我真的从来没有想过这种方法,所以无论如何我都很欣赏这个答案。当我停下来思考的时候,它是如此的直截了当。事实上我有一个关于这个的问题。我没有建立连接,如果我将代码点传递给upcase,它会将其视为字符串String.upcase(第一个)
barfs,但String.upcase()
起作用。有人能给我指一个地方,让我能找到关于这个的解释吗(或者甚至在这里推一推解释)<代码>第一个
作为整数匹配
表示“first
是一个整数,表示utf8编码二进制中字符的码点”。不能对整数进行升格,但使用二进制语法将其转换回utf-8编码的字符串,然后可以对其进行升格。