使用原子编辑器转义 (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
在 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