Ngôn ngữ lập trình Go cung cấp một gói chuẩn mạnh mẽ để xử lý chuỗi, đó là strings
. Gói này chứa nhiều hàm hữu ích để thực hiện các thao tác xử lý chuỗi như cắt, nối, tìm kiếm, so sánh, và nhiều thao tác khác. Trong bài viết này, chúng ta sẽ khám phá cách sử dụng strings
để làm việc với chuỗi trong Go.
1. Hàm Contains.
Hàm Contains kiểm tra xem một chuỗi có tồn tại trong chuỗi khác hay không.
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello, World!"
substr := "World"
if strings.Contains(str, substr) {
fmt.Printf("%s contains %s\n", str, substr)
} else {
fmt.Printf("%s does not contain %s\n", str, substr)
}
}
2. Hàm Split.
Hàm Split tách một chuỗi thành một mảng các chuỗi, dựa trên một ký tự phân tách.
package main
import (
"fmt"
"strings"
)
func main() {
str := "apple,orange,banana"
fruits := strings.Split(str, ",")
for _, fruit := range fruits {
fmt.Println(fruit)
}
}
3. Hàm Join.
Hàm Join kết hợp các phần tử của một mảng thành một chuỗi, sử dụng một chuỗi nối giữa chúng.
package main
import (
"fmt"
"strings"
)
func main() {
fruits := []string{"apple", "orange", "banana"}
joinedStr := strings.Join(fruits, ", ")
fmt.Println(joinedStr)
}
4. Hàm Replace.
Hàm Replace thay thế tất cả các xuất hiện của một chuỗi con bằng một chuỗi khác.
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello, World! Hello, Universe!"
newStr := strings.Replace(str, "Hello", "Hola", -1)
fmt.Println(newStr)
}
5. Hàm ToLower và ToUpper.
Hàm ToLower chuyển đổi tất cả các ký tự trong chuỗi thành chữ thường, trong khi ToUpper chuyển đổi chúng thành chữ hoa.
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello, World!"
lowerStr := strings.ToLower(str)
upperStr := strings.ToUpper(str)
fmt.Println(lowerStr)
fmt.Println(upperStr)
}
6. Hàm Trim.
Hàm Trim cắt bỏ ký tự từ đầu và cuối chuỗi.
package main
import (
"fmt"
"strings"
)
func main() {
str := " Hello, World! "
trimmedStr := strings.Trim(str, " ")
fmt.Printf("[%s]\n", trimmedStr)
}
7. Hàm Fields.
Hàm Fields tách chuỗi thành một slice các từ, dựa trên các khoảng trắng.
package main
import (
"fmt"
"strings"
)
func main() {
str := "This is a sample sentence"
words := strings.Fields(str)
for _, word := range words {
fmt.Println(word)
}
}
8. Hàm Repeat.
Hàm Repeat lặp lại một chuỗi n lần.
package main
import (
"fmt"
"strings"
)
func main() {
str := "Go "
repeatedStr := strings.Repeat(str, 3)
fmt.Println(repeatedStr)
}
9. Hàm Index.
Hàm Index
trả về chỉ số đầu tiên của chuỗi con trong chuỗi hoặc -1 nếu không tìm thấy.
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello, World!"
substr := "World"
index := strings.Index(str, substr)
fmt.Println("Index:", index)
}
10. Hàm Compare.
Hàm Compare so sánh hai chuỗi. Nó trả về 0 nếu chuỗi giống nhau, -1 nếu chuỗi thứ nhất nhỏ hơn, và 1 nếu chuỗi thứ nhất lớn hơn.
package main
import (
"fmt"
"strings"
)
func main() {
str1 := "apple"
str2 := "orange"
result := strings.Compare(str1, str2)
fmt.Println("Comparison result:", result)
}
11. Hàm HasPrefix và HasSuffix.
Hàm HasPrefix kiểm tra xem chuỗi có bắt đầu bằng một tiền tố cụ thể không. Hàm HasSuffix kiểm tra xem chuỗi có kết thúc bằng một hậu tố cụ thể không.
package main
import (
"fmt"
"strings"
)
func main() {
str := "Go Programming"
prefixResult := strings.HasPrefix(str, "Go")
suffixResult := strings.HasSuffix(str, "Programming")
fmt.Println("Has Prefix:", prefixResult)
fmt.Println("Has Suffix:", suffixResult)
}
12. Hàm ToLower và ToUpper.
Hàm ToLower và ToUpper có thể được sử dụng để chuyển đổi các rune (ký tự Unicode) trong chuỗi.
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
str := "Hello, 世界!"
// Chuyển đổi chữ thường
lowerStr := strings.Map(unicode.ToLower, str)
// Chuyển đổi chữ hoa
upperStr := strings.Map(unicode.ToUpper, str)
fmt.Println("Lowercase:", lowerStr)
fmt.Println("Uppercase:", upperStr)
}
13. Hàm TrimLeft, TrimRight, TrimPrefix, TrimSuffix.
Các hàm này giúp cắt bỏ ký tự đặc biệt từ đầu hoặc cuối chuỗi, hoặc cắt bỏ một tiền tố/hậu tố cụ thể.
package main
import (
"fmt"
"strings"
)
func main() {
str := "### Welcome to Go! ###"
trimmed := strings.TrimLeft(str, "#")
trimmedRight := strings.TrimRight(str, "#")
trimmedPrefix := strings.TrimPrefix(str, "### ")
trimmedSuffix := strings.TrimSuffix(str, " ###")
fmt.Println("Trim Left:", trimmed)
fmt.Println("Trim Right:", trimmedRight)
fmt.Println("Trim Prefix:", trimmedPrefix)
fmt.Println("Trim Suffix:", trimmedSuffix)
}
14. Hàm Map.
Hàm Map áp dụng một hàm cho từng rune trong chuỗi và trả về chuỗi mới.
package main
import (
"fmt"
"strings"
"unicode"
)
func main() {
str := "hello"
// Áp dụng hàm chuyển đổi chữ in hoa cho từng rune
result := strings.Map(func(r rune) rune {
return unicode.ToUpper(r)
}, str)
fmt.Println(result)
}
15. Hàm Count.
Hàm Count
đếm số lần xuất hiện của một chuỗi con trong chuỗi.
package main
import (
"fmt"
"strings"
)
func main() {
str := "abababab"
substr := "ab"
count := strings.Count(str, substr)
fmt.Println("Count:", count)
}
16. Hàm Title.
Hàm Title chuyển đổi mỗi từ trong chuỗi thành chữ in hoa ở đầu.
package main
import (
"fmt"
"strings"
)
func main() {
str := "this is a title"
titleStr := strings.Title(str)
fmt.Println(titleStr)
}
17. Hàm NewReader.
Hàm NewReader tạo một đối tượng Reader từ một chuỗi, giúp bạn đọc chuỗi dưới dạng io.Reader.
package main
import (
"fmt"
"strings"
"io"
)
func main() {
str := "Hello, World!"
reader := strings.NewReader(str)
buf := make([]byte, len(str))
reader.Read(buf)
fmt.Println("Read from string:", string(buf))
}
18. Hàm IndexAny và LastIndexAny.
Hàm IndexAny tìm chỉ số của bất kỳ ký tự nào trong chuỗi con, còn LastIndexAny tìm chỉ số cuối cùng của bất kỳ ký tự nào trong chuỗi con.
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello, World!"
chars := "aeiou"
index := strings.IndexAny(str, chars)
lastIndex := strings.LastIndexAny(str, chars)
fmt.Println("Index of any vowel:", index)
fmt.Println("Last index of any vowel:", lastIndex)
}
19. Hàm ReplaceAll.
Hàm ReplaceAll thay thế tất cả các xuất hiện của một chuỗi con bằng một chuỗi khác.
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello, World! Hello, Universe!"
newStr := strings.ReplaceAll(str, "Hello", "Hola")
fmt.Println(newStr)
}
20. Hàm ToValidUTF8.
Hàm ToValidUTF8 loại bỏ các rune không hợp lệ khỏi chuỗi và trả về một chuỗi mới.
package main
import (
"fmt"
"strings"
)
func main() {
str := "Hello, 世界!\xF0\x28\x8C\xBC\xE4\xB8\x96\xE7\x95\x8C"
validStr := strings.ToValidUTF8(str, "")
fmt.Println("Valid UTF-8 string:", validStr)
}
Những ví dụ trên chỉ là một số ít trong số nhiều chức năng mà package strings
cung cấp trong ngôn ngữ Go. Bạn có thể tham khảo thêm trong tài liệu chính thức của Go để hiểu rõ hơn về các hàm khác và cách sử dụng chúng.
6. Kết Luận
Package strings
trong Go cung cấp một loạt các hàm hữu ích giúp xử lý chuỗi một cách hiệu quả. Bạn có thể sử dụng những hàm này để thực hiện nhiều thao tác khác nhau trên chuỗi, giúp bạn viết mã nguồn sáng tạo và hiệu quả. Hãy khám phá và sử dụng những tính năng mạnh mẽ của package strings
trong các dự án Go của bạn.