elixir中的String.split()将空字符串放在输出中的子字符串列表的末尾

shu*_*l92 6 split elixir

我是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)

ElixirElang版本如下

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.有人能让我知道为什么我得到上述输出并帮助预期输出?

ach*_*zot 8

我猜这是预期的行为.您提供链接还说明了以下内容:

如果该: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/1String.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)