作為一個開發者,對於字串的處理一般都很常用,整理一下,希望能幫到一些同學
package main
import (
"fmt"
"strconv"
"strings"
)
// 統計長度:len(str) 內建函式不要引入包包,一個漢字三個位元組
// 遍歷含有中文的字串,需要用切片 r := []rune(str)
// 字串轉整數 strconv.Atoi("123")
// 整數轉字串 strconv.Itoa(12345)
func main() {
//統計長度:len(str) 內建函式不要引入包包,一個漢字三個位元組
str := "hello北"
fmt.Println("str len = ", len(str))
//遍歷含有中文的字串,需要用切片 r := []rune(str)
str1 := "hello北京"
str2 := []rune(str1)
for i := 0; i < len(str2); i++ {
fmt.Printf("字元=%c\n", str2[i])
}
//字串轉整數 strconv.Atoi("123")
n, err := strconv.Atoi("123")
if err != nil {
fmt.Println("轉換錯誤:", err)
} else {
fmt.Println("轉換結果:", n)
}
//整數轉字串 strconv.Itoa(12345)
str3 := strconv.Itoa(12345)
fmt.Printf("str3 = %v,str3 = %T \n", str3, str3)
// 字串 轉 []byte
var bytes = []byte("hello go")
fmt.Printf("byte %v\n", bytes)
// []byte 轉字串: str = string([]byte{97,98,99})
str4 := string([]byte{97, 98, 99})
fmt.Printf("str4 %v\n", str4)
// 10進位制,轉2、8、16進位制 strconv.FormatInt(123,2) 返回對應的字串
str = strconv.FormatInt(123, 2)
fmt.Printf("str 二進位制 %v\n", str)
str = strconv.FormatInt(123, 16)
fmt.Printf("str 16進位制 %v\n", str)
// 查詢子串是否在指定的字串中:strings.Contains("seafoo","foo") //true
is_check := strings.Contains("seafoo", "foo")
fmt.Printf("is_check is %v \n", is_check)
// 統計一個字元中,有幾個指定的子串 strings.Count("apple","p")
num := strings.Count("apple", "p")
fmt.Printf("有 %v個\n", num)
fmt.Println(strings.Count("cheese", "e")) // 3
fmt.Println(strings.Count("five", "")) // before & after each rune // 5
// 不區分大小寫的字串比較(== 是區分大小寫的):fmt.Println(strings.EqualFold("abc","ABC"))
b := strings.EqualFold("abc", "ABC") // strings.EqualFold 不區分大小寫
fmt.Println("strings.EqualFold 判斷", b)
fmt.Println("==判斷", "abc" == "Abc") // == 區分大小寫
// 返回子串在一個字串中第一次出現的index值,如果沒有則返回-1
// 也可用於判斷是否存在 strings.Index("apple","p")
index := strings.Index("this is an apple", "p")
fmt.Println("第一次出現的index值是 ", index)
// 返回子串在字串中出現的最後一次的位置,如果沒有則返回-1 , strings.LastIndex("this is an apple", "p")
index = strings.LastIndex("this is an apple", "p")
fmt.Println("最後一次出現index值是 ", index)
// 將指定的子串替換成另一個子串 strings.Replace("go golang", "go", "go語言", n)
// 在字串 go golang 中 把 go 替換成 go語言 n標識希望替換幾個,如果-1則全部替換
str = strings.Replace("go go hello", "go", "hi", -1)
fmt.Println("替換後 ", str)
// 按照指定的某個字元,為分割標識,將一個字串拆分成字串陣列 strings.Split("Tom go to school"," ")
strArr := strings.Split("Tom go to school", " ")
fmt.Printf("strArr %v\n", strArr)
// 將字串進行大小寫轉換 strings.ToLower(str) 是轉小寫 strings.ToUpper(str) 是轉大寫
str = "Tom go to school"
str = strings.ToLower(str)
fmt.Printf("str ToLower is: %v\n", str)
str = strings.ToUpper(str)
fmt.Printf("str ToUpper is: %v\n", str)
// 將字串左右兩邊的空格去掉strings.TrimSpace(" aaa bbb ")
str = " Tom go to school "
str = strings.TrimSpace(str)
fmt.Printf("str TrimSpace is=|%v|\n", str)
// 將字串左右兩邊指定的字元去掉 strings.Trim("**aa bb ++", " **++") 去掉兩邊的 空格、**、++
str = "** ++Tom **go to ++school **"
str = strings.Trim(str, " **++")
fmt.Printf("str Trim is=|%v|\n", str)
// 將字串左邊指定的字串去掉strings.TrimLeft("**aa bb ++", " **++") 去掉兩邊的 空格、**、++
strLeft := "** ++Tom **go to ++school **"
strLeft = strings.TrimLeft(strLeft, " **++")
fmt.Printf("str TrimLeft is=|%v|\n", strLeft)
// 將字串左邊指定的字串去掉strings.TrimRight("**aa bb ++", " **++") 去掉兩邊的 空格、**、++
strRight := "** ++Tom **go to ++school **"
strRight = strings.TrimRight(strRight, " **++")
fmt.Printf("str TrimRight is=|%v|\n", strRight)
// 判斷字串是否以指定的字串開頭 strings.HasPrefix("ftp://192.168.1.1","ftp") 返回true
str = "ftp://192.168.1.1"
fmt.Println("開頭是否含有", strings.HasPrefix(str, "ftp"))
// 判斷字串是否以指定的字串結尾 strings.HasSuffix("abc123.jpg","abc") 返回false
str = "abc123.jpg"
fmt.Println("結尾是否含有", strings.HasSuffix(str, "jpg"))
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結