Elixir語言中 Macro.unescape_string
相關用法介紹如下。
用法一
unescape_string(string)
@spec unescape_string(String.t()) :: String.t()
取消轉義給定的字符。
這是 Elixir 單引號和雙引號字符串中默認使用的非轉義行為。檢查
以獲取有關如何自定義轉義Map的信息。unescape_string/2
在此設置中,Elixir 將轉義以下內容:\0
, \a
, \b
, \d
, \e
, \f
, \n
, \r
, \s
, \t
和 \v
。字節可以通過\xNN
以十六進製形式給出,Unicode 代碼點可以通過\uNNNN
轉義。
此函數通常用於接收原始未轉義字符串的 sigil 實現(如 ~r
、 ~s
等)。
例子
iex> Macro.unescape_string("example\\n")
"example\n"
在上麵的示例中,我們傳遞了一個帶有\n
轉義的字符串,並返回一個未轉義的版本。
用法二
unescape_string(string, map)
@spec unescape_string(String.t(), (non_neg_integer() -> non_neg_integer() | false)) ::
String.t()
根據給定的Map對給定的字符進行轉義。
如果要使用與 Elixir 單引號和雙引號字符串相同的映射,請檢查
。unescape_string/1
Map
Map必須是一個函數。該函數接收一個整數,表示它想要取消轉義的字符的代碼點。下麵是 Elixir 實現的默認映射函數:
def unescape_map(:newline), do: true
def unescape_map(:unicode), do: true
def unescape_map(:hex), do: true
def unescape_map(?0), do: ?0
def unescape_map(?a), do: ?\a
def unescape_map(?b), do: ?\b
def unescape_map(?d), do: ?\d
def unescape_map(?e), do: ?\e
def unescape_map(?f), do: ?\f
def unescape_map(?n), do: ?\n
def unescape_map(?r), do: ?\r
def unescape_map(?s), do: ?\s
def unescape_map(?t), do: ?\t
def unescape_map(?v), do: ?\v
def unescape_map(e), do: e
如果 unescape_map/1
函數返回 false
,則字符不會轉義,反斜杠將保留在字符串中。
如果映射為 :newline
、 :unicode
和 :hex
分別返回 true
,則換行符、Unicode 和十六進製代碼點將被轉義。
例子
使用上麵定義的unescape_map/1
函數很容易:
Macro.unescape_string("example\\n", &unescape_map(&1))
相關用法
- Elixir Macro.unique_var用法及代碼示例
- Elixir Macro.underscore用法及代碼示例
- Elixir Macro.unpipe用法及代碼示例
- Elixir Macro.update_meta用法及代碼示例
- Elixir Macro.Env.fetch_alias用法及代碼示例
- Elixir Macro.prewalk用法及代碼示例
- Elixir Macro.generate_unique_arguments用法及代碼示例
- Elixir Macro.quoted_literal?用法及代碼示例
- Elixir Macro.Env.required?用法及代碼示例
- Elixir Macro.validate用法及代碼示例
- Elixir Macro.Env.prepend_tracer用法及代碼示例
- Elixir Macro.camelize用法及代碼示例
- Elixir Macro.operator?用法及代碼示例
- Elixir Macro.var用法及代碼示例
- Elixir Macro.expand_once用法及代碼示例
- Elixir Macro.to_string用法及代碼示例
- Elixir Macro.Env.lookup_import用法及代碼示例
- Elixir Macro.prewalker用法及代碼示例
- Elixir Macro.postwalker用法及代碼示例
- Elixir Macro.generate_arguments用法及代碼示例
- Elixir Macro.Env.has_var?用法及代碼示例
- Elixir Macro.decompose_call用法及代碼示例
- Elixir Macro.Env用法及代碼示例
- Elixir Macro.escape用法及代碼示例
- Elixir Macro用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Macro.unescape_string(string)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。