5

(たとえば) a\n(3 バイト文字列: 0x61,0x5c,0x6e) から 2 バイト文字列:に変換する Ocaml の標準的な方法はあり0x61,0x0aますか?

私の Ocaml プログラムは、エスケープされた文字を含む文字列を受け取ることができます。それらを「エスケープ解除」する方法は?

4

2 に答える 2

3

http://caml.inria.fr/mantis/view.php?id=3888からの素敵なソリューション:

let unescape s = Scanf.sscanf ("\"" ^ s ^ "\"") "%S%!" (fun u -> u)

于 2012-04-17T12:55:40.883 に答える
2

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 以降

于 2015-11-02T04:09:39.273 に答える