サーチ…


文字列リテラル

let string1 = "Hello" //simple string

let string2 = "Line\nNewLine" //string with newline escape sequence

let string3 = @"Line\nSameLine" //use @ to create a verbatim string literal

let string4 = @"Line""with""quoutes inside" //double quoute to indicate a single quoute inside @ string

let string5 = """single "quote" is ok""" //triple-quote string literal, all symbol including quote are verbatim

let string6 = "ab
cd"// same as "ab\ncd"

let string7 = "xx\
    yy" //same as "xxyy", backslash at the end contunies the string without new line, leading whitespace on the next line is ignored 

単純な文字列書式設定

結果として文字列をフォーマットして取得するには、いくつかの方法があります。

.NETの方法は、 String.FormatまたはStringBuilder.AppendFormatを使用することString.Format

open System
open System.Text

let hello = String.Format ("Hello {0}", "World")
// return a string with "Hello World"

let builder = StringBuilder()
let helloAgain = builder.AppendFormat ("Hello {0} again!", "World")
// return a StringBuilder with "Hello World again!"

F#には、文字列をCスタイルでフォーマットする機能もあります。各.NET関数には同等のものがあります:

  • sprintf (String.Format):
open System

let hello = sprintf "Hello %s" "World" 
// "Hello World", "%s" is for string

let helloInt = sprintf "Hello %i" 42 
// "Hello 42", "%i" is for int

let helloFloat = sprintf "Hello %f" 4.2 
// "Hello 4.2000", "%f" is for float

let helloBool = sprintf "Hello %b" true 
// "Hello true", "%b" is for bool

let helloNativeType = sprintf "Hello %A again!" ("World", DateTime.Now) 
// "Hello {formatted date}", "%A" is for native type

let helloObject = sprintf "Hello %O again!" DateTime.Now 
// "Hello {formatted date}", "%O" is for calling ToString
  • bprintf (StringBuilder.AppendFormat):
open System
open System.Text

let builder = StringBuilder()

// Attach the StringBuilder to the format function with partial application
let append format = Printf.bprintf builder format

// Same behavior as sprintf but strings are appended to a StringBuilder
append "Hello %s again!\n" "World"
append "Hello %i again!\n" 42
append "Hello %f again!\n" 4.2
append "Hello %b again!\n" true
append "Hello %A again!\n" ("World", DateTime.Now)
append "Hello %O again!\n" DateTime.Now

builder.ToString() // Get the result string

.NET関数の代わりにこれらの関数を使用すると、いくつかの利点があります。

  • タイプセーフティ
  • 部分的なアプリケーション
  • F#ネイティブ型サポート


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow