package main import ( "fmt" "strings" "strconv" ) func main(){ //返回字串的(位元組)長度,相當於PHP的strlen str := "hello世界" //11 ,golang的編碼統一為utf-8,字母和數字分別佔一個位元組,漢子佔用3個位元組 // str := "hello" //5 fmt.Println(len(str)) //字串遍歷 str2 := "hello世界" //如果有中文,需要轉切片,不然會出現亂碼,因為是按照字串的位元組長度遍歷 str2_r := []rune(str2) for i := 0; i < len(str2_r); i++ { fmt.Printf("%c\n",str2_r[i]) } //字串轉整數 //第一個引數是要轉化成的字串,第二個是錯誤資訊.這裡需要引用strconv包 n, err := strconv.Atoi("123") if err != nil { //如果有錯 fmt.Println("轉換錯誤", err) } else { //如果成功 fmt.Println("轉換成功", n) } //整數轉字串 str = strconv.Itoa(12345) fmt.Printf("str=%v, str=%T", str, str) //str=12345, str=string //字串轉[]byte var bytes = []byte("hello golang") fmt.Println(bytes) //str=12345, str=string[104 101 108 108 111 32 103 111 108 97 110 103] //[]byte轉字串 str = string([]byte{97, 98, 99}) fmt.Println(str) //abc 的asc碼分別是97,98,99 //十進位制轉化成2,8,16進位制,返回對應的字串 str = strconv.FormatInt(123, 2) fmt.Printf("123對應的二進位制是=%v\n", str) str = strconv.FormatInt(123, 8) fmt.Printf("123對應的八進位制是=%v\n", str) str = strconv.FormatInt(123, 16) fmt.Printf("123對應的十六進位制是=%v\n", str) //123對應的二進位制是=1111011 //123對應的八進位制是=173 //123對應的十六進位制是=7b //判斷一個字串中是否包含指定字串 ,相當於php中的strpos,但是php中可能會返回下標 status := strings.Contains("hello world", "hello") fmt.Printf("status=%v\n", status) //status=true //統計一個字串中有幾個指定的字元 count := strings.Count("hello world", "l") fmt.Printf("字元存在個數:%v\n", count) //字元存在個數:3;如果沒有,則0 //字串比較:不區分大小寫 status = strings.EqualFold("abc", "ABC") fmt.Printf("status=%v\n", status) //status=true //字串比較:區分大小寫 兩個= fmt.Printf("status=%v", "abc" == "ABC")//status=false //返回子字串在指定字串中第一次出現的index值(位置),如果沒有返回-1 index := strings.Index("test_str", "s") fmt.Printf("index=%v", index) //index=2 }