我最近有点自满地写了像
这样的东西printf "\n%f\n" 3.2
而不是
printf "%s%f%s" Environment.NewLine 3.2 Environment.NewLine
我的问题是:有没有办法像第一个版本一样编写安全的第二个版本(即格式字符串中插入Environment.Newline
的特殊字符,以便格式字符串中每个换行实例的参数不是必需的)?
答案 0 :(得分:8)
如何使用kprintf进行双遍传递,将\ n替换为NewLine:
let nprintf fmt = Printf.kprintf (fun s -> s.Replace("\n", Environment.NewLine) |> printf "%s") fmt
然后在nprintf "\n%f\n" 3.2
中,所有\ n都被NewLine取代。
答案 1 :(得分:5)
没有转义序列,但你可以缩短它:
[<AutoOpen>]
module StringFormatting =
let nl = System.Environment.NewLine
//Usage
printfn "%s%f%s" nl 3.2 nl
Here是MSDN上的字符转义列表。
顺便说一句,我想知道这会做什么:
printfn @"
%f
" 3.2