字符串操作在編程中占了很大的比重。
package mainimport ( "bytes" "fmt" "strconv" "strings" "unicode")/**簡單實用string操作符 func Contains(s, substr string) bool func Join(a []string, sep string) string func Index(s, sep string) int func Replace(s, old, new string, n int) string func Repeat(s string, count int) string func Split(s, sep string) []string func Trim(s string, cutset string) string func Fields(s string) []string func Compare(a, bstring)int //查找 // 判斷給定字符串s中是否包含子串substr, 找到返回true, 找不到返回false funcContains(s, substrstring)bool // 在字符串s中查找sep所在的位置, 返回位置值, 找不到返回-1 funcIndex(s, sepstring)int // 統計給定子串sep的出現次數, sep為空時, 返回1 + 字符串的長度 funcCount(s, sepstring)int //重復 // 重復s字符串count次, 最后返回新生成的重復的字符串 func Repeat(sstring,countint)string //替換 // 在s字符串中, 把old字符串替換為new字符串,n表示替換的次數,小于0表示全部替換funcReplace(s, old,newstring, nint)string //刪除 // 刪除在s字符串的頭部和尾部中由cutset指定的字符, 并返回刪除后的字符串 func Trim(sstring, cutsetstring)string //大小寫轉換 // 給定字符串轉換為英文標題的首字母大寫的格式(不能正確處理unicode標點) funcTitle(sstring)string // 所有字母轉換為小寫 funcToLower(sstring)string // 所有字母轉換為大寫 funcToUpper(sstring)string 字符串前綴后綴 前綴和后綴的判斷均為大小寫敏感 // 判斷字符串是否包含前綴PRefix funcHasprefix(s, prefixstring)bool // 判斷字符串是否包含后綴suffix, funcHasSuffix(s, suffixstring)bool 字符串分割 字符串分割 函數接口 // 把字符串按照sep進行分割, 返回slice(類似于python中的split) funcSplit(s, sepstring) []string // 去除字符串s中的空格符, 并按照空格(可以是一個或者多個空格)分割字符串, 返回slice funcFields(sstring) []string // 當字符串中字符c滿足函數f(c)時, 就進行字符串s的分割 funcFieldsFunc(sstring, ffunc(rune)bool) []string 字符串拼接 三種拼接方案: 1 直接用 += 操作符, 直接將多個字符串拼接. 最直觀的方法, 不過當數據量非常大時用這種拼接訪求是非常低效的. 2 用字符串切片([]string)裝載所有要拼接的字符串, 最后使用strings.Join() 函數一次性將所有字符串拼接起來。在數據量非常大時,這種方法的效率也還可以的。 3 利用Buffer( Buffer是一個實現了讀寫方法的可變大小的字節緩沖 ),將所有的字符串都寫入到一個Buffer變量中,最后再統一輸出. 字符轉換 字符串轉換 字符串轉化的函數在 strconv 中 Append* 函數表示將給定的類型(如 bool, int 等)轉換為字符串后, 添加在現有的字節數組中 []byte Format* 函數將給定的類型變量轉換為string返回 Parse* 函數將字符串轉換為其他類型**/func main() { //比較 fmt.Println(strings.Compare(string("go1"), string("go12"))) //查找 var str1, str2 string str1 = "hello world" str2 = "h" fmt.Println(strings.Contains(str1, str2)) fmt.Println(strings.Index(str1, "w")) fmt.Println(strings.Count(str1, "l")) //重復 fmt.Println(strings.Repeat("l", 3)) //替換 fmt.Println(strings.Replace(str1, "l", "x", 1)) fmt.Println(strings.Replace(str1, "l", "x", -1)) //刪除 fmt.Println(strings.Trim(str1, "/n")) fmt.Println(strings.Trim(str1, "d")) //大小寫轉換 fmt.Println(strings.Title(str1)) fmt.Println(strings.ToUpper(str1)) fmt.Println(strings.ToLower(strings.ToUpper(str1))) //前后綴 fmt.Println(strings.HasPrefix(str1, "H")) fmt.Println(strings.HasSuffix(str1, "d")) //分割 fmt.Println(strings.Split(str1, " ")) fmt.Println(strings.Fields(str1)) aFunc := func(a rune) bool { return !unicode.IsLetter(a) } fmt.Println(strings.FieldsFunc(str1, aFunc)) //拼接 str2 = " gogogo!" fmt.Println(str1 + str2) var strArr []string strArr = append(strArr, str1) strArr = append(strArr, str2) fmt.Println(strings.Join(strArr, "")) var buffer bytes.Buffer buffer.WriteString(str1) buffer.WriteString(str2) fmt.Println(buffer.String()) //字符串轉換 //Append* Format* Parse* str3 := make([]byte, 0, 100) str3 = strconv.AppendInt(str3, 12, 10) str3 = strconv.AppendInt(str3, 12, 8) str3 = strconv.AppendInt(str3, 12, 16) str3 = strconv.AppendBool(str3, true) str3 = strconv.AppendQuote(str3, "好噠") str3 = strconv.AppendQuoteRune(str3, '好') fmt.Println(string(str3)) //格式化處理 fmt.Printf("%T,%v/n", strconv.FormatBool(true), strconv.FormatBool(true)) fmt.Printf("%T,%v/n", strconv.FormatInt(-44, 10)) fmt.Printf("%T,%v/n", strconv.Itoa(1234), strconv.Itoa(1234))}新聞熱點
疑難解答