2011-02-23 73 views
3

我最近买了有点自满写作之类的东西换行和格式化

printf "\n%f\n" 3.2 

,而不是

printf "%s%f%s" Environment.NewLine 3.2 Environment.NewLine 

我的问题是:有什么办法可以作为很好地写出安全的第二个版本作为第一个(即插入Environment.Newline的格式字符串中的特殊字符,以便不需要格式字符串中的每个换行实例的参数)?

+0

当我试着两个尾随\ n,它似乎得到你想要的。 printf“\ n%f \ n \ n”3.2 – 2011-02-23 05:46:41

回答

7

如何使用kprintf为双通,与换行符替换\ N:

let nprintf fmt = Printf.kprintf (fun s -> s.Replace("\n", Environment.NewLine) |> printf "%s") fmt 

然后在nprintf "\n%f\n" 3.2所有人\ n换成NewLine。

+0

我喜欢它!有一件事我学会了,我需要小心使用这个解决方案,那就是每个换成's'的换行符都必须用“\ n”来表示。 – 2011-02-23 14:47:38

4

这里没有一个转义序列,但你可以缩短它:

[<AutoOpen>] 
module StringFormatting = 
    let nl = System.Environment.NewLine 

//Usage 
printfn "%s%f%s" nl 3.2 nl 

Here是人物的名单逃脱MSDN上。

顺便说一句,我不知道这是什么会做:

printfn @" 
%f 
" 3.2