當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。