字符串操作是任何編程語言中都無法避免的操作,本篇文章將詳細介紹Golang中字符串包含相關的操作和實現,包括字符串截取、反轉、轉數字、拼接、生成隨機字符串、排序、轉時間、轉數組等操作。
一、Golang字符串截取
Golang中截取字符串有多種方式,可以利用循環語句和字符串切片等方法,下面分別進行介紹。
第一種方法:利用循環語句進行截取。代碼如下:
func subString(str string, start int, length int) string {
rs := []rune(str)
len_rs := len(rs)
end := start + length
if start = len_rs || end > len_rs {
return ""
}
return string(rs[start:end])
}
func main() {
str := "Golang is a powerful programming language"
fmt.Println(subString(str, 7, 5)) // 輸出 "is a "
}
第二種方法:使用字符串切片截取。代碼如下:
func main() {
str := "Golang is a powerful programming language"
subStr := str[7:12]
fmt.Println(subStr) // 輸出 "is a "
}
需要注意的是,在使用字符串切片進行截取時,被截取的字符串可以是漢字,但是需要保證截取的起始和結束位置所在的位元組均為漢字對應的utf-8編碼的三個位元組的起始位置和結束位置。
二、Golang字符串反轉
字符串反轉是一個常見的字符串操作,可以使用Golang內置的strings包或者自己實現函數進行實現。
第一種方法:使用strings包中的Reverse函數進行反轉。代碼如下:
func main() {
str := "Hello, world!"
reversed := []rune(str)
for i, j := 0, len(reversed)-1; i < j; i, j = i+1, j-1 {
reversed[i], reversed[j] = reversed[j], reversed[i]
}
fmt.Println(string(reversed)) // 輸出 "!dlrow ,olleH"
}
第二種方法:自己實現字符串反轉函數。代碼如下:
func reverse(str string) string {
runes := []rune(str)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
func main() {
str := "Hello, world!"
fmt.Println(reverse(str)) // 輸出 "!dlrow ,olleH"
}
三、Golang字符串轉數字
Golang中可以使用strconv包進行字符串和數字類型之間的轉換,使用起來非常方便。
第一種方法:將字符串轉為整型數字或浮點型數字。代碼如下:
func main() {
str := "123"
// 將字符串轉為整型數字
i, _ := strconv.Atoi(str)
fmt.Printf("%d\n", i)
// 將字符串轉為浮點型數字
f, _ := strconv.ParseFloat(str, 64)
fmt.Printf("%f\n", f)
}
第二種方法:將數字類型轉為字符串。代碼如下:
func main() {
i := 123
// 將整型數字轉為字符串
str_i := strconv.Itoa(i)
fmt.Printf("%s\n", str_i)
f := 123.456
// 將浮點型數字轉為字符串
str_f := strconv.FormatFloat(f, 'f', 2, 64)
fmt.Printf("%s\n", str_f)
}
四、Golang字符串拼接
Golang中可以使用+或者strings包中的Join函數進行字符串的拼接,下面分別進行介紹。
第一種方法:使用+進行字符串拼接。代碼如下:
func main() {
str1 := "Hello"
str2 := "World!"
// 使用+進行字符串拼接
result := str1 + ", " + str2
fmt.Printf("%s\n", result)
}
第二種方法:使用Join函數進行字符串拼接。代碼如下:
func main() {
strs := []string{"Hello", "World!", "Golang"}
// 使用Join函數進行字符串拼接
result := strings.Join(strs, ", ")
fmt.Printf("%s\n", result)
}
五、Golang生成隨機字符串
生成隨機字符串在一些應用中非常有用,可以使用Golang中的math/rand和time包進行實現。
代碼如下:
import (
"math/rand"
"time"
)
func init() {
rand.Seed(time.Now().UnixNano())
}
func generateRandomString(length int) string {
letters := []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
bytes := make([]rune, length)
for i := range bytes {
bytes[i] = letters[rand.Intn(len(letters))]
}
return string(bytes)
}
func main() {
fmt.Println(generateRandomString(10)) // 輸出 "vIoF8JcI0Z"
}
六、Golang字符串排序
Golang中可以使用sort包進行字符串的排序,排序方式可以是正序(從小到大)或者倒序(從大到小)。
代碼如下:
import (
"fmt"
"sort"
)
func main() {
strs := []string{"c", "a", "b"}
sort.Strings(strs)
fmt.Println("Strings:", strs)
sort.Sort(sort.Reverse(sort.StringSlice(strs)))
fmt.Println("Reverse:", strs)
}
七、Golang字符串轉時間
Golang中可以使用time包進行字符串和時間類型之間的轉換。
代碼如下:
import (
"fmt"
"time"
)
func main() {
str_time := "2022-10-01 01:02:03"
layout := "2006-01-02 15:04:05"
time_parse, err := time.Parse(layout, str_time)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(time_parse)
}
}
八、Golang字符串轉數組
Golang中可以使用strings包中的Split函數將字符串轉為數組。
代碼如下:
import (
"fmt"
"strings"
)
func main() {
str := "a,b,c,d"
// 使用Split函數將字符串轉為數組
str_array := strings.Split(str, ",")
fmt.Println(str_array) // 輸出 ["a", "b", "c", "d"]
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/238954.html
微信掃一掃
支付寶掃一掃