当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir String.split用法及代码示例


Elixir语言中 String.split 相关用法介绍如下。

用法一

split(binary)
@spec split(t()) :: [t()]

在每个 Unicode 空格出现时将字符串划分为子字符串,忽略前导和尾随空格。空白组被视为一次出现。除法不会发生在不间断的空白处。

例子

iex> String.split("foo bar")
["foo", "bar"]

iex> String.split("foo" <> <<194, 133>> <> "bar")
["foo", "bar"]

iex> String.split(" foo   bar ")
["foo", "bar"]

iex> String.split("no\u00a0break")
["no\u00a0break"]

用法二

split(string, pattern, options \\ [])
@spec split(t(), pattern() | Regex.t(), keyword()) :: [t()]

根据模式将字符串划分为多个部分。

返回这些部分的列表。

pattern 可以是字符串、字符串列表、正则表达式或编译模式。

默认情况下,字符串被拆分为尽可能多的部分,但可以通过:parts 选项进行控制。

仅当 :trim 选项设置为 true 时,才会从结果中删除空字符串。

当使用的模式是正则表达式时,使用 Regex.split/3 拆分字符串。

选项

  • :parts (正整数或 :infinity ) - 字符串最多拆分为此选项指定的多个部分。如果 :infinity ,字符串将被分成所有可能的部分。默认为 :infinity

  • :trim (boolean) - 如果 true ,则从结果列表中删除空字符串。

如果 pattern 是正则表达式,此函数还接受 Regex.split/3 接受的所有选项。

例子

用字符串模式分割:

iex> String.split("a,b,c", ",")
["a", "b", "c"]

iex> String.split("a,b,c", ",", parts: 2)
["a", "b,c"]

iex> String.split(" a b c ", " ", trim: true)
["a", "b", "c"]

模式列表:

iex> String.split("1,2 3,4", [" ", ","])
["1", "2", "3", "4"]

一个正则表达式:

iex> String.split("a,b,c", ~r{,})
["a", "b", "c"]

iex> String.split("a,b,c", ~r{,}, parts: 2)
["a", "b,c"]

iex> String.split(" a b c ", ~r{\s}, trim: true)
["a", "b", "c"]

iex> String.split("abc", ~r{b}, include_captures: true)
["a", "b", "c"]

编译模式:

iex> pattern = :binary.compile_pattern([" ", ","])
iex> String.split("1,2 3,4", pattern)
["1", "2", "3", "4"]

拆分空字符串返回字素:

iex> String.split("abc", "")
["", "a", "b", "c", ""]

iex> String.split("abc", "", trim: true)
["a", "b", "c"]

iex> String.split("abc", "", parts: 1)
["abc"]

iex> String.split("abc", "", parts: 3)
["", "a", "bc"]

请注意,此函数可以在字形边界内或跨字形边界拆分。例如,采用由字符"e" 和尖音符组成的字形"é"。以下将字符串分成两部分:

iex> String.split(String.normalize("é", :nfd), "e")
["", "́"]

但是,如果 "é" 由单个字符“带尖音符的 e”表示,那么它将把字符串分成一个部分:

iex> String.split(String.normalize("é", :nfc), "e")
["é"]

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 String.split(binary)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。