我是Elixir的新手。我正在尝试对split字符串进行基本操作,如下所示
String.split("Awesome","");
根据elixir document,它应该split基于提供的模式的字符串。我得到的output
如下
["A", "w", "e", "s", "o", "m", "e", ""]
我期待output
如下
["A", "w", "e", "s", "o", "m", "e"]
我的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
我无法理解为什么在输出中empty string
的{{1}}添加了end
。有人能让我知道为什么我得到上面的输出并帮助预期输出吗?
答案 0 :(得分:6)
我猜这是预期的行为。 link you provided也说了以下内容:
如果
:trim
选项设置为true,则仅从结果中删除空字符串。
这是解决方案的一个例子:
拆分空图案会返回字形:
iex> String.split("abc", "")
["a", "b", "c", ""]
iex> String.split("abc", "", trim: true)
["a", "b", "c"]
如果您想知道什么是“字素”,那么Elixir文档也会在String documentation的开头解释这一点。
最后,如果你想深入研究字形,还有另外两个有用的功能: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"]