Thao tác chuỗi trong Go: Cách cập nhật văn bản
Thao tác chuỗi là cơ bản trong phát triển phần mềm; Rốt cuộc, hầu hết các ngôn ngữ lập trình đều cung cấp một loại chuỗi. Một chuỗi là một dãy các ký tự: chữ cái, số và ký hiệu.
Thao tác chuỗi có ích cho nhiều ứng dụng khác nhau, từ xử lý văn bản và phân tích dữ liệu đến phát triển web. Các hoạt động thao tác chuỗi phổ biến là nối, xác thực dữ liệu, trích xuất và định dạng. Go cung cấp gói thao tác chuỗi có tên là “strings” trong thư viện chuẩn.
Mục Lục
Gói dây
Các dây gói cung cấp các chức năng hữu ích khác nhau để thao tác chuỗi và các hoạt động khác. Gói này bao gồm chức năng cho các hoạt động chuỗi con, cắt xén, so sánh chuỗi, chuyển đổi chuỗi, xây dựng chuỗi, chia tách, v.v.
Bạn có thể nhập gói chuỗi bằng cách chỉ định tên gói trong danh sách nhập của mình.
import "strings"
Tìm kiếm chuỗi con
Các dây gói cung cấp ba chức năng để tìm kiếm các chuỗi con: Chứa đựng chức năng, các chứa bất kỳ chức năng, và ChứaRune hàm số.
Các Chứa đựng hàm kiểm tra xem chuỗi đã chỉ định có chứa chuỗi con hay không. Các chứa bất kỳ hàm kiểm tra xem chuỗi có chứa bất kỳ ký tự nào trong chuỗi con không và ChứaRune chức năng kiểm tra xem chuỗi có chứa rune (ký tự Unicode) hay không.
import (
"fmt"
"strings"
)func main() {
aString := "Hello, World!"
substring := "World"
characters := "aeiou"
aRune := 'o'
fmt.Println(strings.Contains(aString, substring))
fmt.Println(strings.ContainsAny(aString, characters))
fmt.Println(strings.ContainsRune(aString, aRune))
}
Bạn có thể truy xuất chỉ mục của một chuỗi con bằng Mục lục, Chỉ mụcBất kỳ, Chỉ mụcBytevà Chức năng chỉ mục chức năng. Các Mục lục hàm trả về chỉ mục của một chuỗi con, nếu nó xuất hiện trong một chuỗi đã cho khác. Các Chỉ mụcBất kỳ hàm trả về chỉ mục của phiên bản đầu tiên của điểm mã Unicode hoặc -1 nếu không có nhân vật nào có mặt.
import (
"fmt"
"strings"
)func main() {
aString := "Hello, world!"
substring := "world"
chars := "wrld"
byteCharacter := byte('o')
aRune := rune('o')
fmt.Println(strings.Index(aString, substring))
fmt.Println(strings.IndexAny(aString, chars))
fmt.Println(strings.IndexByte(aString, byteCharacter))
f := func(r rune) bool {
return r == 'o'
}
fmt.Println(strings.IndexFunc(aString, f))
fmt.Println(strings.IndexRune(aString, aRune))
}
Chỉ mụcByte trả về chỉ mục của phiên bản đầu tiên của ký tự byte trong chuỗi hoặc -1. Các Chức năng chỉ mục hàm trả về chỉ mục thành chuỗi của điểm Unicode đầu tiên thỏa mãn một hàm đã cho. cuối cùng IndexRune hàm trả về chỉ mục của phiên bản đầu tiên của điểm mã Unicode của rune.
Thay thế Substrings trong Go
Các Thay thế và Thay thế tất cả chức năng trợ giúp với việc thay thế các chuỗi con. Các Thay thế hàm nhận vào chuỗi, chuỗi con ban đầu, thay thế và một số thay thế. Các Thay thế tất cả hàm chỉ nhận chuỗi, chuỗi con ban đầu và thay thế.
import (
"fmt"
"strings"
)func main() {
theString := "This is a test string to be modified."
fmt.Println(strings.Replace(theString, "is", "was", 1))
fmt.Println(strings.Replace(theString, "is", "was", -1))
fmt.Println(strings.ReplaceAll(theString, "is", "was"))
}
Lưu ý rằng bạn có thể sử dụng cả Replace và ReplaceAll để thay thế mọi lần xuất hiện trong chuỗi.
Tách và nối chuỗi
Các dây gói chứa Tách ra, Tách sau, SplitafterN, và táchN các hàm để tách chuỗi trả về một lát của chuỗi.
Các Tách ra phương pháp phân tách bằng một dấu phân cách được chỉ định. Tương tự như Tách ra phương pháp, các Tách sau phương pháp phân tách chuỗi, nhưng nó bao gồm dấu phân tách trong kết quả của nó.
import (
"fmt"
"strings"
)func main() {
s := "This is a test string to be split."
fmt.Println(strings.Split(s, " "))
fmt.Println(strings.SplitAfter(s, " "))
fmt.Println(strings.SplitAfterN(s, " ", 3))
fmt.Println(strings.SplitN(s, " ", 3))
}
Các TáchSauN phương pháp tương tự như Tách sau chức năng ngoại trừ chức năng chia chuỗi thành tối đa các chuỗi con được chỉ định. Các táchN phương pháp phân tách chuỗi thành một số tối đa được chỉ định mà không bao gồm dấu phân cách trong các chuỗi con.
Bạn có thể tham gia chuỗi với Tham gia chức năng từ dây bưu kiện. Các Tham gia hàm nhận một lát cắt và một dấu phân cách.
import (
"fmt"
"strings"
)func main() {
fmt.Println(strings.Join([]string{"Hello", "World"}, ":"))
}
Trường hợp chuỗi thao tác
Thao tác với trường hợp chuỗi thuận tiện cho nhiều tác vụ, kể cả làm việc với tài liệu. Bạn có thể dùng Để Hạ chức năng cho chữ thường, các ToUpper chức năng cho chữ hoa, và ToTitle chức năng cho vỏ tiêu đề.
import (
"fmt"
"strings"
)func main() {
s := "This is a test string."
fmt.Println(strings.ToLower(s))
fmt.Println(strings.ToUpper(s))
fmt.Println(strings.ToTitle(s))
}
Xây dựng chuỗi trong Go
Trình tạo chuỗi là một loại cho phép nối hiệu quả trong Go. Các byte.Buffer type là một trong những trình tạo chuỗi thường được sử dụng. Các byte.Buffer phương thức thực hiện một bộ đệm byte có thể phát triển với các phương thức đọc và ghi cho các hoạt động, cho phép nối chuỗi hiệu quả mà không cần tạo bản sao mới, không giống như phương thức + hoạt động và Tham gia hàm số.
import (
"fmt"
"strings"
)func main() {
var b strings.Builder
b.WriteString("This ")
b.WriteString("is ")
b.WriteString("a ")
b.WriteString("test ")
b.WriteString("string.")
fmt.Println(b.Len())
str := b.String()
fmt.Println(str)
b.Reset()
b.WriteString("This ")
b.WriteString("is ")
b.WriteString("another ")
b.WriteString("test ")
b.WriteString("string.")
fmt.Println(b.Cap())
str = b.String()
fmt.Println(str)
}
Các chủ yếu chức năng minh họa cách bạn có thể sử dụng chuỗi.Builder type để xây dựng chuỗi hiệu quả. Các ViếtString phương pháp của Strings.Builder type mở rộng chuỗi các chuỗi với nhau và len phương thức trả về độ dài của chuỗi đã tạo.
Các Chuỗi phương thức chuyển đổi nội dung của trình tạo thành một chuỗi và Cài lại phương pháp đặt lại trình xây dựng để xây dựng chuỗi bổ sung.
Các Mũ lưỡi trai phương thức trả về năng lực của trình xây dựng. Đây là không gian hiện tại mà Go đã phân bổ cho chuỗi.
Cắt chuỗi trong Go
Các dây gói cũng cung cấp chức năng cắt chuỗi trong cắt tỉa, TrimLeft, TrimPrefix, TrimRight, cắt không gian, và TrimSuffix chức năng.
import (
"strings"
"fmt"
)func main() {
s := "Hello, World!"
prefix := "Hello"
suffix := "World!"
fmt.Println(strings.Trim(s, "!"))
fmt.Println(strings.TrimSpace(s))
fmt.Println(strings.TrimLeft(s, "Hello"))
fmt.Println(strings.TrimRight(s, "World!"))
fmt.Println(strings.TrimPrefix(s, prefix))
fmt.Println(strings.TrimSuffix(s, suffix))
}
Các chủ yếu chức năng minh họa cách bạn có thể sử dụng các chức năng để cắt xén. Các chức năng khác nhau cắt S chuỗi theo nhiều cách khác nhau:
Bạn có thể định dạng chuỗi trong Go
Thư viện chuẩn Go cũng cung cấp gói fmt để định dạng chuỗi. Gói fmt sử dụng các động từ định dạng kiểu C để định dạng chuỗi hiệu quả trong Go.