使用原子编辑器转义 (s)printf 中的字符

Escaping characters in (s)printf with atom-editor

在 Linux 上使用单声道原子编辑器时,我在 sprintf 语句中转义 '\' 时遇到困难。

在 Windows 上与 VS:

sprintf "%s" "\"

被评估为

val it : string = "\"

这是应该的。

如果我用 VSCode 或 Linux 下的 atom-editor 计算相同的表达式,我得到

val it : string = "\"

进一步说明: 如果在 Windows 上(我在 Windows 上安装了 Mono 以检查这一点),我从 'Mono Command Prompt' 开始 'fsharpi',则上述表达式被正确评估为“\”。就像我在 Linux.

下做同样的事情一样

这看起来更像是一个编辑器显示问题,而不是评估本身的错误。公平地说,这总是让我感到困惑——编辑器应该按原样显示字符串值,还是应该将其显示为有效的转义 F# 字符串?我认为两者都有意义...

检查您真正获得的值的最简单方法是 运行 在 F# Interactive 中进行一些检查:

> let s = "\";;    
val s : string = "\"

> s.Length;;
val it : int = 1

> s.[0] = '\';;
val it : bool = true