- F# 基礎教程
- F# - 首頁
- F# - 概述
- F# - 環境設定
- F# - 程式結構
- F# - 基本語法
- F# - 資料型別
- F# - 變數
- F# - 運算子
- F# - 決策
- F# - 迴圈
- F# - 函式
- F# - 字串
- F# - 可選型別
- F# - 元組
- F# - 記錄
- F# - 列表
- F# - 序列
- F# - 集合
- F# - 對映
- F# - 辨別聯合
- F# - 可變資料
- F# - 陣列
- F# - 可變列表
- F# - 可變字典
- F# - 基本輸入/輸出
- F# - 泛型
- F# - 委託
- F# - 列舉
- F# - 模式匹配
- F# - 異常處理
- F# - 類
- F# - 結構體
- F# - 運算子過載
- F# - 繼承
- F# - 介面
- F# - 事件
- F# - 模組
- F# - 名稱空間
F# - 字串
在 F# 中,字串型別表示不可變的文字,作為 Unicode 字元序列。
字串字面量
字串字面量由雙引號 (") 字元分隔。
有一些特殊字元用於特殊用途,例如換行符、製表符等。它們使用反斜槓 (\) 字元進行編碼。反斜槓字元和相關字元構成轉義序列。下表顯示了 F# 支援的轉義序列。
| 字元 | 轉義序列 |
|---|---|
| 退格 | \b |
| 換行 | \n |
| 回車 | \r |
| 製表符 | \t |
| 反斜槓 | \\ |
| 雙引號 | \" |
| 單引號 | \' |
| Unicode 字元 | \uXXXX 或 \UXXXXXXXX(其中 X 表示十六進位制數字) |
忽略轉義序列的方法
以下兩種方法使編譯器忽略轉義序列:
- 使用 @ 符號。
- 將字串括在三個雙引號中。
當字串字面量前面帶有 @ 符號時,稱為逐字字串。這樣,字串中的所有轉義序列都將被忽略,但兩個雙引號字元將被解釋為一個雙引號字元。
當字串用三個雙引號括起來時,所有轉義序列也將被忽略,包括雙引號字元。
示例
以下示例演示了此技術,展示瞭如何處理包含嵌入式雙引號的 XML 或其他結構:
// Using a verbatim string let xmldata = @"<book author = ""Lewis, C.S"" title = ""Narnia"">" printfn "%s" xmldata
編譯並執行程式後,將產生以下輸出:
<book author = "Lewis, C.S" title = "Narnia">
字串的基本運算子
下表顯示了字串的基本操作:
| 值 | 描述 |
|---|---|
| collect : (char → string) → string → string | 建立一個新字串,其字元是將指定函式應用於輸入字串的每個字元並將結果字串連線起來的結果。 |
| concat : string → seq<string> → string | 返回一個新字串,該字串透過使用分隔符連線給定的字串來建立。 |
| exists : (char → bool) → string → bool | 測試字串中的任何字元是否滿足給定的謂詞。 |
| forall : (char → bool) → string → bool | 測試字串中的所有字元是否滿足給定的謂詞。 |
| init : int → (int → string) → string | 建立一個新字串,其字元是將指定函式應用於每個索引並將結果字串連線起來的結果。 |
| iter : (char → unit) → string → unit | 將指定函式應用於字串中的每個字元。 |
| iteri : (int → char → unit) → string → unit | 將指定函式應用於字串中每個字元的索引和字元本身。 |
| length : string → int | 返回字串的長度。 |
| map : (char → char) → string → string | 建立一個新字串,其字元是將指定函式應用於輸入字串的每個字元的結果。 |
| mapi : (int → char → char) → string → string | 建立一個新字串,其字元是將指定函式應用於輸入字串的每個字元和索引的結果。 |
| replicate : int → string → string | 透過連線指定數量的字串例項來返回一個字串。 |
以下示例演示了一些上述功能的用法:
示例 1
String.collect 函式構建一個新字串,其字元是將指定函式應用於輸入字串的每個字元並將結果字串連線起來的結果。
let collectTesting inputS = String.collect (fun c -> sprintf "%c " c) inputS printfn "%s" (collectTesting "Happy New Year!")
編譯並執行程式後,將產生以下輸出:
H a p p y N e w Y e a r !
示例 2
String.concat 函式使用分隔符連線給定的字串序列並返回一個新字串。
let strings = [ "Tutorials Point"; "Coding Ground"; "Absolute Classes" ] let ourProducts = String.concat "\n" strings printfn "%s" ourProducts
編譯並執行程式後,將產生以下輸出:
Tutorials Point Coding Ground Absolute Classes
示例 3
String.replicate 方法透過連線指定數量的字串例項來返回一個字串。
printfn "%s" <| String.replicate 10 "*! "
編譯並執行程式後,將產生以下輸出:
*! *! *! *! *! *! *! *! *! *!
廣告