golang对字符串的操作

字符串操作在编程中占了很大的比重。

package main

import (
    "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,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,-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,8)
    str3 = strconv.AppendInt(str3,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,strconv.FormatInt(-44,10))
    fmt.Printf("%T,strconv.Itoa(1234),strconv.Itoa(1234))

}

相关文章

程序目录结构 简单实现,用户登录后返回一个jwt的token,下次请求带上token请求用户信息接口并返回信息...
本篇博客的主要内容是用go写一个简单的Proof-of-Work共识机制,不涉及到网络通信环节,只是一个本地的简...
简介 默克尔树(MerkleTree)是一种典型的二叉树结构,其主要特点为: 最下面的叶节点包含存储数据或其...
接下来学习并发编程, 并发编程是go语言最有特色的地方, go对并发编程是原生支持. goroutine是go中最近本...
先普及一下, 什么是广度优先搜索 广度优先搜索类似于树的层次遍历。从图中的某一顶点出发,遍历每一个顶...
第一天: 接口的定义和实现 第二天: 一. go语言是面向接口编程. 在学习继承的时候说过, go语言只有封装,...