[strconv]
:strconv.IntSize # 获得操作系统平台下INT类型所占的位数
[类型转换]
:traInt, _ := strconv.Atoi("4") # 字符串, 转化成Int类型
:traFloat, _ := strconv.ParseFloat("4", 10) # float64
:traStr := strconv.Itoa(4) # Int类型转string类型
[字符串比较]
:com := strings.Compare("str1", "str2") # 0 相等、其他不相等
[包含]
:var isCon bool = strings.Contains("str1", "str2") # str1是否含有,str2 。含有, true
[查找位置]
:var theIndex int = strings.Index("str1", "str2") # str2在str1的那个位置, -1 不含有
:lastIndex := strings.LastIndex(str01, "o") # 最后出现的索引
:strings.Count("str1", "str2") # 统计字符串出现的次数
:strings.Repeat("world ", 10) # 重复字符串, 返回生成的重复字符串
:strings.Replace(str03, "/", "**", -1) # 替换字符串
:strings.Trim(str03, "/") # 删除开头结尾
:strings.TrimLeft(str03, "/") # 删除左边
:strings.TrimRight(str03, "/")
:strings.TrimSpace(" hello hao hao hao ") # 删除空格
:strings.Title(str07)
:strings.ToLower(" Hello Hao Hao Hao")
:strings.ToUpper(str07)
:strings.HasPrefix("Gopher", "Go") # 匹配前缀
:strings.HasSuffix("Amigo", "go") # 匹配后缀
:fieldsSlece := strings.Fields(fieldsStr) # 根据空白符分割,不限定中间间隔几个空白符
:strings.Split("q,w,e,r,t,y,", ",") # 根据特定字符分割
:strings.Join(fieldsSlece, ",") # 拼接
[字符串比较]
func Compare(a, b string) int # Compare比较字符串的速度比字符串内建的比较要快
[字符串查找]
// 判断给定字符串s中是否包含子串substr, 找到返回true, 找不到返回false
func Contains(s, substr string) bool
// 在字符串s中查找sep所在的位置, 返回位置值, 找不到返回-1
func Index(s, sep string) int
// 统计给定子串sep的出现次数, sep为空时, 返回1 + 字符串的长度
func Count(s, sep string) int
[字符串重复]
// 重复s字符串count次, 最后返回新生成的重复的字符串
func Repeat(s string, count int) string
[字符串替换]
// 在s字符串中, 把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换
func Replace(s, old, new string, n int) string
[字符串删除]
// 删除在s字符串的头部和尾部中由cutset指定的字符, 并返回删除后的字符串
func Trim(s string, cutset string) string
// 删除首尾的空格
strings.Trim(" !!! Achtung! Achtung! !!! ", "! ")
// 删除空白符
strings.TrimSpace(" \t\n a lone gopher \n\t\r\n")
[字符串大小写转换]
// 给定字符串转换为英文标题的首字母大写的格式(不能正确处理unicode标点)
func Title(s string) string
// 所有字母转换为小写
func ToLower(s string) string
// 所有字母转换为大写
func ToUpper(s string) string
[字符串前缀后缀]
// 判断字符串是否包含前缀prefix
func HasPrefix(s, prefix string) bool
// 判断字符串是否包含后缀suffix,
func HasSuffix(s, suffix string) bool
[字符串分割]
// 把字符串按照sep进行分割, 返回slice(类似于python中的split)
func Split(s, sep string) []string
// 去除字符串s中的空格符, 并按照空格(可以是一个或者多个空格)分割字符串, 返回slice
func Fields(s string) []string
// 当字符串中字符c满足函数f(c)时, 就进行字符串s的分割
func FieldsFunc(s string, f func(rune) bool) []string
[字符串拼接]
直接用+=操作符, 直接将多个字符串拼接. 最直观的方法, 不过当数据量非常大时用这种拼接访求是非常低效的
用字符串切片([]string)装载所有要拼接的字符串,最后使用strings.Join()函数一次性将所有字符串拼接起来。在数据量非常大时,这种方法的效率也还可以的。
利用Buffer(Buffer是一个实现了读写方法的可变大小的字节缓冲),将所有的字符串都写入到一个Buffer变量中,最后再统一输出
// bytes.Buffer的方法, 将给定字符串追加(append)到Buffer
func (b *Buffer) WriteString(s string) (n int, err error)
// 字符串拼接, 把slice通过给定的sep连接成一个字符串
func Join(a []string, sep string) string
// 字符串拼接效率
package main
import (
"bytes"
"fmt"
"strings"
"time"
)
func main() {
var buffer bytes.Buffer
s := time.Now()
for i := 0; i < 100000; i++ {
buffer.WriteString("test is here\n")
}
buffer.String() // 拼接结果
e := time.Now()
fmt.Println("taked time is ", e.Sub(s).Seconds())
s = time.Now()
str := ""
for i := 0; i < 100000; i++ {
str += "test is here\n"
}
e = time.Now()
fmt.Println("taked time is ", e.Sub(s).Seconds())
s = time.Now()
var sl []string
for i := 0; i < 100000; i++ {
sl = append(sl, "test is here\n")
}
strings.Join(sl, "")
e = time.Now()
fmt.Println("taked time is", e.Sub(s).Seconds())
}
[strconv - 字符串转换]
Append*函数表示将给定的类型(如bool, int等)转换为字符串后, 添加在现有的字节数组中[]byte
Format*函数将给定的类型变量转换为string返回
Parse*函数将字符串转换为其他类型
// 字符串转整数
func Atoi(s string) (i int, err error)
// 整数值换字符串
func Itoa(i int) string
str := make([]byte, 0, 100)
str = strconv.AppendInt(str, 123, 10) // 10用来表示进制, 此处为10进制
str = strconv.AppendBool(str, false)
str = strconv.AppendQuote(str, "andrew")
str = strconv.AppendQuoteRune(str, '刘')
fmt.Println(string(str)) // 123false"andrew"'刘'
s := strconv.FormatBool(true)
fmt.Printf("%T, %v\n", s, s) // string, true
v := 3.1415926535
s32 := strconv.FormatFloat(v, 'E', -1, 32)
fmt.Printf("%T, %v\n", s32, s32) // string, 3.1415927E+00
s10 := strconv.FormatInt(-44, 10)
fmt.Printf("%T, %v\n", s10, s10) // string, -44
num := strconv.Itoa(1234)
fmt.Printf("%T, %v\n", s, s) // int, 1023
fmt.Printf("%T, %v\n", num, num) // string, 1234