字符串 – String

数据类型 Liemer_Lius 791℃

方法:
Strings包提供了常用和方法。
Compare: 比较字符串
Contains: 是否包含子字符串
Count: 子字符串出现次数
EqualFold: 不区分大小写比较
HasPrefix: 是否有前缀
HasSuffix: 是否有尾缀
Index: 获取子字符的Index
Fields: 按空白字符分割字符串
Split: 指定分割符分割
Join: 字符串合并
LastIndex: 获取子字符在字符串中的最后一个索引

fmt.Println(strings.Compare("abc", "acb"))                                   // -1
fmt.Println(strings.Contains("abc", "ab"))                                   // true
fmt.Println(strings.ContainsAny("abc", "ac"))                                // true
fmt.Println(strings.Count("abca", "a"))                                      // 2
fmt.Println(strings.Fields("abc def ghi"))                                   // [abc def ghi]
fmt.Println(strings.HasPrefix("abc", "ab"))                                  // true
fmt.Println(strings.HasSuffix("abc", "ac"))                                  // false
fmt.Println(strings.Index("abc", "b"))                                       // 1
fmt.Println(strings.LastIndex("abcab", "a"))                                 // 3
fmt.Println(strings.Split("hello;my;name;is;tom", ";"))                      // [hello my name is tom]
fmt.Println(strings.Join([]string{"hello", "my", "name", "is", "tom"}, "_")) // hello_my_name_is_tom
fmt.Println(strings.Repeat("abc", 3))                                        // abcabcabc
fmt.Println(strings.Replace("abcdefabcabc", "ab", "xy", 2))                  // xycdefxycabc, 替换前n个
fmt.Println(strings.Replace("abcdefabcabc", "ab", "xy", -1))                 // xycdefxycxyc, -1替换全部, =ReplaceAll
fmt.Println(strings.ReplaceAll("abcdefabcabc", "ab", "xy"))                  // xycdefxycxyc
fmt.Println(strings.ToLower("abcABC"))                                       // 转换小写
fmt.Println(strings.ToUpper("abcABC"))                                       // 转换大写
fmt.Println(strings.Title("abcABC"))                                         // 首字母大写
fmt.Println(strings.Trim("zzxyzabcxyzabcyxzxx", "xz"))                       // yzabcxyzabcy, 左右全部删减xz, 直到不是它俩为止
fmt.Println(strings.TrimLeft("zzxyzabcxyzabcyxzxx", "xz"))                   // yzabcxyzabcyxzxx, 仅左侧
fmt.Println(strings.TrimRight("zzxyzabcxyzabcyxzxx", "xz"))                  // zzxyzabcxyzabcy, 仅右侧
fmt.Println(strings.TrimSpace("   hello dkkd  dkkdi    "))                   // hello dkkd  dkkdi
fmt.Print(strings.TrimPrefix("", ""))                                        // 去除前缀
fmt.Print(strings.TrimSuffix("", ""))                                        // 去除尾缀

[]byte的方法和strings的方法是一样的。

长度计算:

import (
	"fmt"
	"unicode/utf8"
)

func main() {
	s := "我爱你,中华人民共和国!"
	fmt.Println(len(s))                    // 36 byte的字符数
	fmt.Println(utf8.RuneCountInString(s)) // 12 UTF-8的字符数
}

strconv包:

// bool: strconv.ParseBool, 解析字符串是不是bool类型
v, err := strconv.ParseBool("true")
fmt.Println(v, err) // true
s_Bool := strconv.FormatBool(true)  // bool类型转换成字符串
fmt.Printf("Type: %T, Value: %v\n", s_Bool, s_Bool) // Type: string, Value: true


// int: Atoi把字符串转换为int
if v, err := strconv.Atoi("123"); err == nil {
	fmt.Println(v)
} else {
	fmt.Println(err)
}

// int: Itoa把Int转换为string
str1 := strconv.Itoa(123)
fmt.Println(str1) // 123

// 10进制数字转换成16进制之后再转换成字符串
i_Str := strconv.FormatInt(10, 16)
fmt.Printf("%T, %v\n", i_Str, i_Str) // string, a

// 解析16进制的字符串, 16表示16进制, 64表示int64
if v, err := strconv.ParseInt("64", 16, 64); err == nil {
	fmt.Printf("%T, %v\n", v, v) // int64, 100

}

// 解析Float字符串, 64表示float64
if v, err := strconv.ParseFloat("3.14", 64); err == nil {
	fmt.Printf("%T, %v\n", v, v) // float64, 3.14

}

Sprintf: 转换字符串

sd := fmt.Sprintf("%d", 12)
sf := fmt.Sprintf("%.2f", 12.3333)
fmt.Printf("sd: %T-%v; sf: %T-%v\n", sd, sd, sf, sf)  // sd: string-12; sf: string-12.33

冒泡排序:Exp

func main() {
	s1 := []int{5, 1, 4, 2, 3}
	for j := 0; j < len(s1)-1; j++ {
		fmt.Println("第", j, "轮比较...")
		for i := j + 1; i < len(s1); i++ {
			left := s1[j]
			right := s1[i]
			tmp := 0
			if right <= left {
				tmp = s1[j]
				s1[j] = s1[i]
				s1[i] = tmp
			}
		}
		fmt.Println("第", j, "轮比较结果: ", s1)
	}
}

# go run main.go
第 0 轮比较...
第 0 轮比较结果:  [1 5 4 2 3]
第 1 轮比较...
第 1 轮比较结果:  [1 2 5 4 3]
第 2 轮比较...
第 2 轮比较结果:  [1 2 3 5 4]
第 3 轮比较...
第 3 轮比较结果:  [1 2 3 4 5]

 

 

转载请注明:liutianfeng.com » 字符串 – String

喜欢 (2)

评论已关闭。