Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Elixir upcase仅用于单词的第一个字母_String_Elixir - Fatal编程技术网

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编码的字符串,然后可以对其进行升格。