F # - Chuỗi
Trong F #, kiểu chuỗi biểu thị văn bản bất biến dưới dạng một chuỗi các ký tự Unicode.
Chuỗi chữ
Các ký tự của chuỗi được phân tách bằng ký tự dấu ngoặc kép (").
Một số ký tự đặc biệt được sử dụng để sử dụng đặc biệt như dòng mới, tab, v.v. Chúng được mã hóa bằng ký tự dấu gạch chéo ngược (\). Ký tự gạch chéo ngược và ký tự liên quan tạo nên chuỗi thoát. Bảng sau đây cho thấy trình tự thoát được hỗ trợ bởi F #.
Tính cách | Trình tự thoát |
---|---|
Backspace | \ b |
Dòng mới | \ n |
Vận chuyển trở lại | \ r |
Chuyển hướng | \ t |
Gạch chéo ngược | \\ |
Dấu ngoặc kép | \ " |
Apostrophe | \ ' |
Ký tự Unicode | \ uXXXX hoặc \ UXXXXXXXX (trong đó X chỉ ra một chữ số thập lục phân) |
Các cách bỏ qua Trình tự Thoát
Hai cách sau đây làm cho trình biên dịch bỏ qua trình tự thoát:
- Sử dụng ký hiệu @.
- Đặt chuỗi trong dấu ngoặc kép.
Khi một ký tự chuỗi đứng trước ký hiệu @, nó được gọi là verbatim string. Theo cách đó, tất cả các chuỗi thoát trong chuỗi đều bị bỏ qua, ngoại trừ hai ký tự trong dấu ngoặc kép được hiểu là một ký tự trong dấu ngoặc kép.
Khi một chuỗi được bao quanh bởi dấu ngoặc kép, thì tất cả các chuỗi thoát cũng bị bỏ qua, kể cả các ký tự trong dấu ngoặc kép.
Thí dụ
Ví dụ sau minh họa kỹ thuật này cho thấy cách làm việc với XML hoặc các cấu trúc khác bao gồm dấu ngoặc kép được nhúng:
// Using a verbatim string
let xmldata = @"<book author = ""Lewis, C.S"" title = ""Narnia"">"
printfn "%s" xmldata
Khi bạn biên dịch và thực thi chương trình, nó sẽ tạo ra kết quả sau:
<book author = "Lewis, C.S" title = "Narnia">
Các toán tử cơ bản trên chuỗi
Bảng sau đây trình bày các thao tác cơ bản trên chuỗi:
Giá trị | Sự miêu tả |
---|---|
thu thập: (char → string) → string → string | Tạo một chuỗi mới có các ký tự là kết quả của việc áp dụng một hàm được chỉ định cho từng ký tự của chuỗi đầu vào và nối các chuỗi kết quả. |
concat: string → seq <string> → string | Trả về một chuỗi mới được tạo bằng cách nối các chuỗi đã cho bằng dấu phân cách. |
tồn tại: (char → bool) → string → bool | Kiểm tra xem có ký tự nào của chuỗi thỏa mãn vị từ đã cho hay không. |
forall: (char → bool) → string → bool | Kiểm tra xem tất cả các ký tự trong chuỗi có thỏa mãn vị từ đã cho hay không. |
init: int → (int → string) → string | Tạo một chuỗi mới có các ký tự là kết quả của việc áp dụng một hàm được chỉ định cho mỗi chỉ mục và nối các chuỗi kết quả. |
iter: (ký tự → đơn vị) → chuỗi → đơn vị | Áp dụng một hàm được chỉ định cho mỗi ký tự trong chuỗi. |
iteri: (int → char → unit) → string → unit | Áp dụng một hàm được chỉ định cho chỉ mục của mỗi ký tự trong chuỗi và chính ký tự đó. |
length: string → int | Trả về độ dài của chuỗi. |
bản đồ: (char → char) → string → string | Tạo một chuỗi mới có các ký tự là kết quả của việc áp dụng một hàm được chỉ định cho từng ký tự của chuỗi đầu vào. |
mapi: (int → char → char) → string → string | Tạo một chuỗi mới có các ký tự là kết quả của việc áp dụng một hàm được chỉ định cho từng ký tự và chỉ mục của chuỗi đầu vào. |
nhân bản: int → string → string | Trả về một chuỗi bằng cách nối một số trường hợp cụ thể của một chuỗi. |
Các ví dụ sau đây chứng minh việc sử dụng một số chức năng ở trên -
ví dụ 1
Hàm String.collect xây dựng một chuỗi mới có các ký tự là kết quả của việc áp dụng một hàm được chỉ định cho từng ký tự của chuỗi đầu vào và nối các chuỗi kết quả.
let collectTesting inputS =
String.collect (fun c -> sprintf "%c " c) inputS
printfn "%s" (collectTesting "Happy New Year!")
Khi bạn biên dịch và thực thi chương trình, nó sẽ tạo ra kết quả sau:
H a p p y N e w Y e a r !
Ví dụ 2
Hàm String.concat nối một chuỗi các chuỗi đã cho bằng dấu phân tách và trả về một chuỗi mới.
let strings = [ "Tutorials Point"; "Coding Ground"; "Absolute Classes" ]
let ourProducts = String.concat "\n" strings
printfn "%s" ourProducts
Khi bạn biên dịch và thực thi chương trình, nó sẽ tạo ra kết quả sau:
Tutorials Point
Coding Ground
Absolute Classes
Ví dụ 3
Phương thức String.replicate trả về một chuỗi bằng cách nối một số trường hợp cụ thể của một chuỗi.
printfn "%s" <| String.replicate 10 "*! "
Khi bạn biên dịch và thực thi chương trình, nó sẽ tạo ra kết quả sau:
*! *! *! *! *! *! *! *! *! *!