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


Elixir String.replace用法及代碼示例


Elixir語言中 String.replace 相關用法介紹如下。

用法:

replace(subject, pattern, replacement, options \\ [])
@spec replace(t(), pattern() | Regex.t(), t() | (t() -> t() | iodata()), keyword()) ::
  t()

返回通過用 replacement 替換 subject 中出現的 pattern 創建的新字符串。

subject 始終是一個字符串。

pattern 可以是字符串、字符串列表、正則表達式或編譯模式。

replacement 可以是字符串或函數,它接收匹配的模式並且必須將替換作為字符串或 iodata 返回。

默認情況下,它會替換所有出現的情況,但可以通過 :global 選項控製此行為;請參閱下麵的"Options" 部分。

選項

  • :global - (布爾值)如果 true ,所有出現的 pattern 都被替換為 replacement ,否則隻替換第一次出現的。默認為true

例子

iex> String.replace("a,b,c", ",", "-")
"a-b-c"

iex> String.replace("a,b,c", ",", "-", global: false)
"a-b,c"

模式也可以是字符串列表,替換也可以是接收匹配項的函數:

iex> String.replace("a,b,c", ["a", "c"], fn <<char>> -> <<char + 1>> end)
"b,b,d"

當模式是正則表達式時,可以在 replacement 字符串中給出 \N\g{N} 以訪問正則表達式中的特定捕獲:

iex> String.replace("a,b,c", ~r/,(.)/, ",\\1\\g{1}")
"a,bb,cc"

請注意,我們必須轉義反斜杠轉義字符(即,我們使用 \\N 而不是僅使用 \N 來轉義反斜杠;對於 \\g{N} 也是如此)。通過給出 \0 ,可以在替換字符串中注入整個匹配項。

也可以給出編譯模式:

iex> pattern = :binary.compile_pattern(",")
iex> String.replace("a,b,c", pattern, "[]")
"a[]b[]c"

當一個空字符串作為 pattern 提供時,該函數會將其視為每個字素之間的隱式空字符串,並且該字符串將被穿插。如果將空字符串作為replacement 提供,則將返回subject

iex> String.replace("ELIXIR", "", ".")
".E.L.I.X.I.R."

iex> String.replace("ELIXIR", "", "")
"ELIXIR"

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 String.replace(subject, pattern, replacement, options \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。