常用的字符串相关操作。
类型转换
import "strconv"
func Atoi(s string) (int, error) func Itoa(i int) string
int转string 4位宽度 provinceStr += fmt.Sprintf("%04d",int(bodyReg.prefecture))
#string到int int,err:=strconv.Atoi(string) #string到int64 int64, err := strconv.ParseInt(string, 10, 64) #int到string string:=strconv.Itoa(int) #int64到string func FormatInt(i int64, base int) string func FormatUint(i uint64, base int) string
string := strconv.FormatInt(int64,10)
f := "3.14159265" if s, err := strconv.ParseFloat(f, 32); err == nil { fmt.Println(s) } if s, err := strconv.ParseFloat(f, 64); err == nil { fmt.Println(s) }
u32 := uint32(12) str := fmt.Sprint(u32) fmt.Println(str)
i, err := strconv.Atoi("-42") s := strconv.Itoa(-42) txcbi.version = strconv.FormatUint(uint64(version),10)
strconv.Itoa(i int) string 返回数字 i 所表示的字符串类型的十进制数。 strconv.FormatFloat(f float64, fmt byte, prec int, bitSize int) string 将 64 位浮点型的数字转换为字符串,其中 fmt 表示格式(其值可以是 'b'、'e'、'f' 或 'g'),prec 表示精度,bitSize 则使用 32 表示 float32,用 64 表示 float64。
|
Float to string
s := fmt.Sprintf("%f", 123.456)
|
查找替换
func Replace(s, old, new string, n int) string
在s字符串中,把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换
//替换两次 fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2)) //全部替换 fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1))
|
编码
https://github.com/axgle/mahonia
//val.Value 是[]byte enc := mahonia.NewDecoder("gbk") perParam.Value = enc.ConvertString(strings.Trim(string(val.Value[:]), " "))
//中文 粤 s := "\xd4\xc1" enc := mahonia.NewDecoder("gbk") fmt.Println(enc.ConvertString(s))
//粤B88888 plate := "d4c142383838383820202020" str,err := hex.DecodeString(plate) if err != nil { // handle error println("convert failed.") } fmt.Println(enc.ConvertString(string(str)))
|
Trim操作
func Trim(s string, cutset string) string func TrimLeft(s string, cutset string) string func TrimRight(s string, cutset string) string func TrimPrefix(s, prefix string) string
comdata.Data = strings.Map(func(r rune) rune { if unicode.IsSpace(r) { return -1 } return r }, str)
|
大小写转换
func ToLower(s string) string func ToUpper(s string) string
|
前缀后缀判断
func HasPrefix(s, prefix string) bool func HasSuffix(s, suffix string) bool
fmt.Println(strings.HasPrefix("Gopher", "Go")) fmt.Println(strings.HasPrefix("Gopher", "C")) fmt.Println(strings.HasPrefix("Gopher", ""))
|
to Byte[]
d1 := "test string" b1 := []byte(d1)
|
[] byte to string
ip := "CMNET" ipByArr := []byte(ip) hexStr := fmt.Sprintf("%x", ipByArr) println(hexStr) str := string(ipByArr)
para := "434d4e4554" str,err := hex.DecodeString(para) if err != nil { println("convert failed.") } println(string(str[:]))
|
hex字符串to字节数组
func DecodeString(s string) ([]byte, error)
var encMsg string bData, err := hex.DecodeString(encMsg)
|
16进制字节数组to字符串
var encData []byte hex.EncodeToString(encData)
func EncodeToString(src []byte) string
|
连接字符串
var buf bytes.Buffer buf.WriteString("hello ") buf.WriteString("roc") fmt.Println(buf.String())
str := strings.Join([]string{"hello"," world"},"") fmt.Println(str) str := "hello" str += "roc"
|
判断字母、数字、空白符
包 unicode 包含了一些针对测试字符的非常有用的函数(其中 ch 代表字符):
判断是否为字母: unicode.IsLetter(ch) 判断是否为数字: unicode.IsDigit(ch) 判断是否为空白符号: unicode.IsSpace(ch) 这些函数返回一个布尔值。包 utf8 拥有更多与 rune 相关的函数。
|
转数组,修改字符串
Go中的单个字符串是rune,可以理解成一个UTF8字符的Unicode码。
import "fmt"
func main() { str := "你好" chars := []rune(str) for i := range chars { fmt.Printf("%c", chars[i]) } fmt.Println()
chars[1] = '我'
newStr := string(chars) fmt.Println(newStr) }
你好 你我
|
slice 分割
替换
func Replace(s, old, new string, n int) string If n < 0, there is no limit on the number of replacements.
fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2)) fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1))
|
gbk转utf-8
gbk := mahonia.NewDecoder("gbk") bodyReg.plate = gbk.ConvertString(string(pp))
|
字符串拼接
import ( "bytes" "fmt" )
func main() { str1 := "hello" str2 := "world"
str3 := str1 + " " + str2
fmt.Println(str3)
var buffer bytes.Buffer buffer.WriteString("hello ") buffer.WriteRune('张')
fmt.Println(buffer.String()) }
hello world hello 张
|