【问题标题】:Char.toString without special handling of " and \Char.toString 没有特殊处理 " 和 \
【发布时间】:2018-09-08 19:10:59
【问题描述】:

我正在尝试将字符转换为这样的字符串:

Char.toString(#"x")

这对大多数字符都有效,但是对于 "\,在其前面添加了一个额外的 \

- Char.toString(#"\"");
val it = "\\\"" : string

这对我来说是不受欢迎的行为。我希望上面的代码 sn-p 返回val it = "\"" : string。 SML 中是否有任何内置函数可以做到这一点?

【问题讨论】:

    标签: escaping sml smlnj


    【解决方案1】:

    来自the documentation of Char.toString

    返回字符的可打印字符串表示,如有必要,使用 SML 转义序列。可打印字符(#"\" 和 #"\"" 除外)保持不变。反斜杠 #"\" 变为 "\\";双引号 #"\"" 变为 "\\""。[...]

    要将字符转换为包含该字符的长度为一的字符串,请使用函数String.str

    并且来自String.str的文档:

    str c 是包含字符 c 的大小为 1 的字符串。

    所以str #"\"" 会做你想做的事。

    【讨论】:

    • Char.toString 的这一特性后来被 PHP 小组以“魔术引号”的名义重新发明。
    猜你喜欢
    • 2011-06-28
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 2018-06-28
    • 2014-09-13
    • 2011-11-16
    • 1970-01-01
    相关资源
    最近更新 更多