1. 程式人生 > 其它 >Go語言strings包基本操作

Go語言strings包基本操作

  1.字串比較

    常用方法: strings.Compare(),strings.EqualFold()

func main() {
	a := "Hello"
	b := "hello"
        // 用於比較兩個字串的大小,如果兩個字串相等,返回為 0。如果 a 小於 b ,返回 -1 ,反之返回 1 
	fmt.Println(strings.Compare(a, b))   // -1
        // EqualFold 函式,計算 s 與 t 忽略字母大小寫後是否相等        
	fmt.Println(strings.EqualFold(a, b))  //true
}

  2.判斷是否存在某字元或字串

    常用方法: strings.Contains()

func main() {
	a := "Hello"
	b := "H"
	c := "你好世界"
	d := "世界"
	fmt.Println(strings.Contains(a, b))  // true
	fmt.Println(strings.Contains(c, d))  // true
}

  3.判斷某字元出現的次數

    常用方法: strings.Count(),當substr為空時,返回utf8.RuneCountInString(s) + 1

func main() {
	a := "Hello"
	b := "H"
	fmt.Println(strings.Count(a, b)) // 1
	c := "世界"
	d := []rune(c)
	fmt.Println(len(d))  // 2
	fmt.Println(utf8.RuneCountInString(c))  // 2
	// 當substr為空時,返回utf8.RuneCountInString(s) + 1
	fmt.Println(strings.Count(c, ""))  //3
}

  4.字串分割

    常用方法: strings.Fields(), strings.FieldsFunc(), strings.Split(), strings.SplitAfter(), strings.SplitN(), strings.SplitAfterN()

func main() {
	a := "how are you"
	b := `你好 中國	世界
			地球`
	// strings.Fields()用一個或多個連續的空格分隔字串,常見間隔符包括:'\t', '\n', '\v', '\f', '\r', ' ', U+0085 (NEL), U+00A0 (NBSP)
	fmt.Println(strings.Fields(a)) // [how are you]
	fmt.Println(strings.Fields(b)) // [你好 中國 世界 地球]

	// strings.FieldsFunc(str, func)用Unicode程式碼點進行分隔:滿足 f(c) 返回 true, 通過實現一個回撥函式來指定分隔字串str的字元
	c := " 1bv 2bd 3mm "
	fmt.Println(strings.FieldsFunc(c, unicode.IsDigit)) // [  bv  bd  mm ]

	// strings.Split()
	d := "how are you"
	e := "hello"
	fmt.Println(strings.Split(d, " ")) // [how are you]
	// sep為空時,分成一個個utf-8字元
	fmt.Println(strings.Split(e, "")) // [h e l l o]

	// strings.SplitAfter() 會保留分割字元
	f := "how,are,you"
	fmt.Println(strings.SplitAfter(f, ",")) // [how, are, you]

	// strings.SplitN() 第三個引數為0時返回空切片,小於0時返回所以子串,大於0時表示返回的切片中有幾個元素
	fmt.Println(strings.SplitN(f, ",", -1)) // [how are you]
	fmt.Println(strings.SplitN(f, ",", 0))  // []
	fmt.Println(strings.SplitN(f, ",", 2))  // [how are,you]
	fmt.Println(strings.SplitN(f, ",", 5))  // [how are you]

	// strings.SplitAfterN() 同SplitN()
	fmt.Println(strings.SplitAfterN(f, ",", 2)) // [how, are,you]
}

  5.判斷字串有某個字首或者字尾

    常用方法: strings.HasPrefix(), strings.HasSuffix()

func main() {
	a := "golang"
	fmt.Println(strings.HasPrefix(a, "go")) //true
	fmt.Println(strings.HasSuffix(a, "go")) //false
	fmt.Println(strings.HasSuffix(a, "ng")) //true
}

  6.字串拼接

    常用方法: strings.Join()

func main() {
	a := []string{"a", "b", "c"}
	fmt.Println(strings.Join(a, "&")) //a&b&c
}

  7.字串替換

    常用方法: strings.Replace()

func main() {
	a := "abcd,世界"
	fmt.Println(strings.Replace(a, "a", "A", -1)) //Abcd,世界
	fmt.Println(strings.Replace(a, "世", "B", -1)) //abcd,B界
}

  8.字串大小寫轉換

    常用方法: strings.ToLower(), strings.ToUpper()

func main() {
	a := "abcd"
	b := "ABCD"
	fmt.Println(strings.ToUpper(a))  //ABCD
	fmt.Println(strings.ToLower(b))  //abcd
}

  9.字串首字母大寫

    常用方法: strings.Title(), strings.ToTitle()

func main() {
	a := "hello world"
	fmt.Println(strings.Title(a)) // Hello World
	fmt.Println(strings.ToTitle(a))  // HELLO WORLD
}

  10.修剪

    常用方法: strings.Trim(), strings.TrimLeft(), strings.TrimRight(), strings.TrimSpace()

func main() {
	a := "ababab你好 cdaaa  a"
	b := " abababHELLO   "

	// Trim去除首尾符合cutset中任意字元的字元
	fmt.Println(strings.Trim(a, "ab")) // 你好 cdaaa
	// TrimLeft去除左側滿足條件的字元
	fmt.Println(strings.TrimLeft(a, "ab")) //你好 cdaaa  a
	//TrimRight去除右側滿足條件的字元
	fmt.Println(strings.TrimRight(a, "a d")) // ababab你好 c
	//TrimSpace去除收尾間隔符
	fmt.Println(strings.TrimSpace(b)) //abababHELLO
}

  11.多字元替換

    常用方法: strings.NewReplacer()

func main() {
	file, _ := os.Create("1.txt")
	a := "<hello>,abc<w>321"

	r := strings.NewReplacer("<", "^^", ">", "$$")
	fmt.Println(r.Replace(a))     //^^hello$$,abc^^w$$321

	_, _ = r.WriteString(file, a) //將替換結果直接寫入檔案
}

  12.Builder型別

func main() {
	b := strings.Builder{}
	b.WriteString("你好")
	b.WriteString("世界")
	fmt.Println(b.String())
}