-
strings 字符串操作
package main
/* 練習(xí) 字符串的操作 */
import (
. "fmt"
_ "strconv"
"strings"
)
// 字符串操作
/* strings */
// 包含
// func Contains(s, substr string) bool
func contains(){
str := "我是yxl, 嘿嘿"
Printf("%v \n", strings.Contains(str, "yxl"))
}
// 連接
// func Join(a []string, sep string) string
func join(){
str_slice := []string{"yxl", "love", "gch"}
Printf("%s", strings.Join(str_slice, "?"))
}
// 字串索引
// func Index(s, sep string) int
func index(){
str := "我是yxl, 嘿嘿"
Printf("%d", strings.Index(str, "yxl")) // 這里是字節(jié)的索引该互,所以漢字占3 個字節(jié) 此處結(jié)果為6
}
// 字符串重復(fù) 多次
// func Repeat(s string, count int) string
func repeat(){
str := "我是yxl, 嘿嘿"
Printf("%s", strings.Repeat(str, 3))
}
// 字串替換
// func Replace(s, old, new string, n int) string
func replace(){
str := "我是yxl, 嘿嘿"
new_str := strings.Replace(str, "yxl", "gch", 1) // 最后的參數(shù), >= 0 盡可能替換韭畸, 小于0 全部替換
Printf(new_str)
}
// 分割為 切片
// func Split(s, sep string) []string
func split(){
str := "我愛|徐州|更愛你"
str_slice := strings.Split(str, "|")
Printf("%v", str_slice)
}
// 去掉 兩邊的字符, 和 py 類似宇智, 屬于遞歸清除每個字符,而不是當(dāng)做整個子字符 清除胰丁, "abc" 清除 兩邊的 a随橘、b、c 而不是 abc 整體
// func Trim(s string, cutset string) string
func delete_char(){
str := "* 前面有空格锦庸,后面也有 *"
Println("原始字串:", str)
str = strings.Trim(str, " *")
Printf("清除兩邊字符后為:%v", str)
}
// 按照空白符切割机蔗,返回切片
// func Fields(s string) []string
func split_by_space(){
str := " 前空格, 后空格 "
Printf("原始字符:%v", str)
new_str_slice := strings.Fields(str)
Printf("操作之后的字符串:%v, 操作之后的切片: %v", str, new_str_slice)
// > 原始字符: 前空格甘萧, 后空格 操作之后的字符串: 前空格萝嘁, 后空格 , 操作之后的切片: [前空格, 后空格]
}
func main(){
// contains()
// join()
// index()
// repeat()
// replace()
// split()
// delete_char()
split_by_space()
}
-
strconv 字符串轉(zhuǎn)換
實現(xiàn)基本數(shù)據(jù)類型轉(zhuǎn)換為 字符串的操作
Append 系列 醬整數(shù)轉(zhuǎn)化為字符串后扬卷,添加到現(xiàn)有的字節(jié)數(shù)組中
// func AppendInt(dst []byte, i int64, base int) []byte base 是進(jìn)制如 10 表示十進(jìn)制
// func AppendQuote(dst []byte, s string) []byte 會添加字符的雙引號
// func AppendQuoteRune(dst []byte, r rune) []byte 添加單引號的字符牙言, 雙引號會報錯
func append(){
str := make([]byte, 0, 100)
str = strconv.AppendInt(str, 4567, 10)
str = strconv.AppendBool(str, false)
str = strconv.AppendQuote(str, "abcdefg")
str = strconv.AppendQuoteRune(str, '單')
Println(string(str))
// > 4567false"abcdefg"'單'
}
Format 系列函數(shù)把其他類型的轉(zhuǎn)換為字符串
// func FormatFloat(f float64, fmt byte, prec, bitSize int) string 這個看不懂
// func Itoa(i int) string 等價于 FormatInt(int64(i), 10)
func format(){
a := strconv.FormatBool(false)
b := strconv.FormatFloat(123.23, 'g', 12, 64)
c := strconv.FormatInt(1234, 10)
d := strconv.FormatUint(12345, 10)
e := strconv.Itoa(1023)
Println(a, b, c, d, e)
//> false 123.23 1234 12345 1023
}
Parse 系列函數(shù)把字符串轉(zhuǎn)換為其他類型
a, _:= strconv.ParseBool("false")
b, _:= strconv.ParseFloat("123.23", 64)
c,_ := strconv.ParseInt("1234", 10, 64)
d, _ := strconv.ParseUint("12345", 10, 64)
e, _ := strconv.Atoi("1023")
Println(a, b, c, d, e)
> false 123.23 1234 12345 1023