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, 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))

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值