GO字符串相關函數

package main

import (
	"fmt"
	"strings"
	"strconv"
)

func main () {
	str := "hello老美" //中文佔三個字節
	fmt.Println("str的長度爲len=", len(str)) //長度爲11

	for i := 0; i < len(str); i++ {
		fmt.Printf("字符=%c\n", str[i]) //中文會亂碼
	}

	rstr := []rune(str) //變成一個rune切片就能夠解決中文
	fmt.Println("rstr的長度爲len=", len(rstr)) //長度爲7
	for i := 0; i < len(rstr); i++ {
		fmt.Printf("字符=%c\n", rstr[i]) //中文正常顯示
	}

	//字符串轉整數
	nstr,err := strconv.Atoi("123")
	fmt.Printf("nstr=%v,err=%v\n", nstr, err)

	//能夠檢驗一個字符串是否爲數字
	nstr2,err2 := strconv.Atoi("abc")
	if nil != err2 {
		fmt.Printf("轉換失敗 %v\n", err2)
	} else {
		fmt.Printf("轉換成功 %v\n", nstr2)
	}

	//整數轉字符串
	atostr := strconv.Itoa(12345)
	fmt.Printf("nstr=%v,err=%T\n", atostr, atostr) //12345 string

	//字符串轉[]byte(string) ascii碼
	by := []byte("hello,abc")
	fmt.Println("byte=", by); //每一個字符的ascii碼

	//[]byte{11,12,13} 轉字符串 string([]byte{11,12})
	bystr := string([]byte{104,101,108,108,111,44,97,98,99})
	fmt.Println("bystr=", bystr);//hello,abc

	//十進制轉換成指定進制(2,8,16)
	num2 := strconv.FormatInt(123, 2) //轉成2進制
	fmt.Println("num2=", num2);

	num8 := strconv.FormatInt(123, 8) //轉成8進制
	fmt.Println("num2=", num8);

	//判斷一個字符串是否在另一個字符串中出現
	b := strings.Contains("abczxxxxxx", "y")//返回bool型
	fmt.Println("b=", b);

	//一個字符串在另一個字符串中出現得次數
	ct := strings.Count("wahaha", "ha")
	fmt.Println("ct=", ct);

	//判斷兩個字符串是否相等 == 區分大小寫,使用strings.EqualFold()不區分
	se := "abc" == "Abc"
	sen := strings.EqualFold("abc", "Abc")
	fmt.Println("se=", se); //false
	fmt.Println("sen=", sen); //true

	//字符串在某一字符串中首次出現得位置 -1 是不存在
	index := strings.Index("wahaha", "h") //2
	index_1 := strings.Index("wahaha", "z") //-1
	fmt.Println("index=", index); //false
	fmt.Println("index_1=",index_1); //true

	//最後出現得位置 -1不存在
	lastIndex := strings.LastIndex("wahaha", "ha")
	fmt.Println("lastIndex=", lastIndex); //4 

	//字符串替換
	originstr := "wahaha"
	newstr := strings.Replace(originstr, "ha", "wa", 1) // 1是替換一個,2替換兩個, -1 替換全部
	fmt.Println("newstr=", newstr); //wawaha
	
	//把一個字符串切割成數組
	arrstr := "ni,hen,niu,b"
	arr := strings.Split(arrstr, ",")
	for i := 0; i < len(arr); i++ {
		fmt.Println(arr[i])
	}
	fmt.Printf("arr=%v,類型%T\n", arr, arr); //wawaha

	//字符串轉換大小寫
	fmt.Println(strings.ToUpper("abc")) //ABC
	fmt.Println(strings.ToLower("AbC")) //abc

	//去掉字符串左右空格
	fmt.Printf("%q\n", strings.TrimSpace("  xyz   ")); //"xyz" %q 加上了""

	//指定去掉左右兩邊的某個字符 TrimLeft,TrimRight 去掉左或者右邊
	fmt.Println(strings.Trim("!!wahah!ahahah!!", "!")) //wahah!ahahah 中間的不會去掉

	//是否以某個字符串開頭(HasPrefix);或者結尾(HasSuffix)
	fmt.Println(strings.HasPrefix("http://www.wahaha.com", "http")) //true
	fmt.Println(strings.HasSuffix("http://www.wahaha.com/test.avi", "avi")) //true
}
相關文章
相關標籤/搜索