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


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 \\ [])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。