2011-02-23 3 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 –

답변

7

어떻게 개행 \ n을 교체, 더블 패스 kprintf 사용에 대한 :

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"을 사용하여 표현해야한다는 것입니다. –

4

는 이스케이프 시퀀스가 ​​아니지만, 당신은 그것을 단축 수 :

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

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

Here 문자의 목록은 MSDN에 빠져있다. 여담으로

, 나는 이것이 어떻게 할 것인지 궁금 :

printfn @" 
%f 
" 3.2