我是Elixir的新手.我正在尝试分割字符串的基本操作,如下所示
String.split("Awesome","");
Run Code Online (Sandbox Code Playgroud)
根据elixir文档,它应该根据提供的模式拆分字符串.在output我得到的是如下
["A", "w", "e", "s", "o", "m", "e", ""]
Run Code Online (Sandbox Code Playgroud)
我期待output如下
["A", "w", "e", "s", "o", "m", "e"]
Run Code Online (Sandbox Code Playgroud)
我Elixir和Elang版本如下
Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Elixir 1.5.1
Run Code Online (Sandbox Code Playgroud)
我无法理解为什么在输出中empty string添加了end一个list of substrings.有人能让我知道为什么我得到上述输出并帮助预期输出?
如果该
:trim选项设置为true,则仅从结果中删除空字符串.
这是解决方案的一个例子:
拆分空模式会返回字形:
iex> String.split("abc", "")
["a", "b", "c", ""]
iex> String.split("abc", "", trim: true)
["a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)
如果您想知道什么是"字形",那么Elixir文档也会在字符串文档的开头解释.
最后,如果你想挖掘字形,还有另外两个有用的功能:String.codepoints/1和String.graphemes/1.例如:
iex> noel = "noe\u0308l"
"noël"
iex> String.codepoints(noel)
["n", "o", "e", "?", "l"]
iex> String.graphemes(noel)
["n", "o", "ë", "l"]
# Let's try with your example
iex> String.codepoints("Awesome")
["A", "w", "e", "s", "o", "m", "e"]
iex> String.graphemes("Awesome")
["A", "w", "e", "s", "o", "m", "e"]
Run Code Online (Sandbox Code Playgroud)