(たとえば) a\n
(3 バイト文字列: 0x61,0x5c,0x6e
) から 2 バイト文字列:に変換する Ocaml の標準的な方法はあり0x61,0x0a
ますか?
私の Ocaml プログラムは、エスケープされた文字を含む文字列を受け取ることができます。それらを「エスケープ解除」する方法は?
http://caml.inria.fr/mantis/view.php?id=3888からの素敵なソリューション:
let unescape s =
Scanf.sscanf ("\"" ^ s ^ "\"") "%S%!" (fun u -> u)
OCaml 4.0.0 以降を使用している場合は、 を使用できますScanf.unescaped
。
例:
# open Scanf
# Scanf.unescaped "a\\n";;
- : bytes = "a\n"
# Scanf.unescaped "\\n\\t\\\\";;
- : bytes = "\n\t\\"
インターフェイス: ( OCaml docs 経由)
val unescaped : string -> string
OCaml の語彙規則に従い、対応する特殊文字に置き換えられたエスケープ シーケンスを含む引数のコピーを返します。引数にエスケープ シーケンスがない場合でも、String.escaped とは異なり、コピーを返します。
4.00.0 以降