如何在printfn/sprintf中转义%?

Fsh*_*ete 7 f#

如何使用printf/sprintf打印带有实际%符号的文本?例如

let fn = 5
printf "%i%" fn
Run Code Online (Sandbox Code Playgroud)

给出编译错误.显而易见的\%也不起作用.

Fsh*_*ete 8

如果要在输出文本中使用%,请使用"%%".

从上面的例子

let fn = 5
printf "%i%%" fn
Run Code Online (Sandbox Code Playgroud)

很乐意打印"5%"

(另外如果你想出于某种原因打印"%5",我找到的唯一方法是连接字符串即

"%"+ (printf "%i" 5)
Run Code Online (Sandbox Code Playgroud)

因为

printf "%%%i" 5
Run Code Online (Sandbox Code Playgroud)

也不会工作.)

  • 值得注意的是,在最初的F#3.1版本中有一个错误,其中`printfn"%%"`开始打印"%%"而不仅仅是"%".如果有人遇到这种情况,3.1.1和后续更新修复了它. (4认同)