zoukankan      html  css  js  c++  java
  • Go-字符串操作包

    strings包

    package main
    
    import (
    	"fmt"
    	"strings"
    )
    
    func main() {
    	fmt.Println(strings.Compare("1", "2"))                       // 比较大小
    	fmt.Println(strings.Contains("abc", "bd"))                   //是否包含
    	fmt.Println(strings.Count("abcabdabd", "bd"))                //计算出现次数
    	fmt.Printf("%q
    ", strings.Fields("abc abc	123
    1
    1"))     //空白字符分割
    	fmt.Println(strings.HasPrefix("abcd", "ab"))                 //以什么开头
    	fmt.Println(strings.HasSuffix("abcd", "ab"))                 //以什么结尾
    	fmt.Println(strings.Join([]string{"1", "2"}, "-"))           //字符串连接,可以指定连接字符
    	fmt.Println(strings.Repeat("*", 20))                         //20个*
    	fmt.Println(strings.Replace("abcabcabcdabc", "abc", "x", 2)) //替换,(src, 需要替换的内容, 替换成的内容, 替换次数)
    	fmt.Println(strings.ReplaceAll("abcabcabcdabc", "abc", "x")) //全部替换
    	fmt.Printf("%q
    ", strings.Split("a-b--c", "-"))             //以什么做分割符
    	fmt.Printf("%q
    ", strings.SplitAfter("a-b-c", "-"))         //分割符也保留
    	fmt.Printf("%q
    ", strings.SplitN("a-b-c", "-", 2))          //分割限定次数
    	fmt.Println(strings.Title("a b bab abc"))                    //首字母大写
    	fmt.Println(strings.ToLower("A B bab abc"))                  //全部小写
    	fmt.Println(strings.ToUpper("A B bab abc"))                  //全部大写
    	fmt.Println(strings.Trim("abcbcdabcdbcabc", "abc"))          //去除前后字符a,b,c
    	fmt.Println(strings.TrimLeft("abcbcdabcdbcabc", "abc"))      //左边去掉a,b,c
    	fmt.Println(strings.TrimRight("abcbcdabcdbcabc", "abc"))     //右边去掉a,b,c
    	fmt.Println(strings.TrimSpace(" abcbcdabcdbcabc 
    
       "))   //去除前后空白字符
    	fmt.Println(strings.TrimSuffix("abcbcdabcdbcabc", "abc"))    //后边的去掉abc
    	fmt.Println(strings.TrimPrefix("abcbcdabcdbcabc", "abc"))    //前面去掉abc
    }
    

    FieldsFunc

    func FieldsFunc(s string, f func(rune) bool) []string
    

    FieldsFunc splits the string s at each run of Unicode code points c satisfying f(c) and returns an array of slices of s. If all code points in s satisfy f(c) or the string is empty, an empty slice is returned.

    FieldsFunc在每次运行Unicode代码时将字符串s分割为满足f(c)的c,并返回一个s的片数组。如果s中的所有代码点都满足f(c)或者字符串为空,则返回一个空片

    func aFields(split rune) bool {
    	return split == 'a'
    }
    
    func main() {
    	fmt.Printf("%q
    ", strings.FieldsFunc("aaabsad", aFields)) //["bs" "d"]
    }
    

    unicode/utf8包

    package main
    
    import (
    	"fmt"
    	"unicode/utf8"
    )
    
    func main() {
    	var name string = "qq"
    	var desc string = "i love china"
    	var txt = "我爱中国"
    
    	fmt.Println(utf8.RuneCountInString(txt))  //中文字符数量
    	fmt.Println(utf8.RuneCountInString(desc)) //unicode数量
    
    	// 字符串 => []byte
    	fmt.Println([]byte(desc))         //转化成byte切片
    	fmt.Println(string([]byte(desc))) //转化成字符串
    	fmt.Println([]byte(txt))          //转化成byte切片
    	fmt.Println(string([]byte(txt)))  //转化成字符串
    
    	// 字符串 => []rune
    	fmt.Println([]rune(desc))         //转化成rune切片
    	fmt.Println(string([]rune(desc))) //转化成字符串
    	fmt.Println([]rune(txt))          //转化成rune切片
    	fmt.Println(string([]rune(txt)))  //转化成字符串
    }
    
    

    strconv包

    package main
    
    import (
    	"fmt"
    	"strconv"
    )
    
    func main() {
    	// 字符串 <=> int
    	i, err := strconv.Atoi("abc")
    	fmt.Println(i, err) // 不是数字,会出错
    	i, err = strconv.Atoi("-15")
    	fmt.Println(i, err)
    	fmt.Printf("%q
    ", strconv.Itoa(45)) //int转化字符串
    
    	// 字符串 <=> bool
    	//strconv.FormatBool bool转化成字符串
    	fmt.Printf("%q
    ", strconv.FormatBool(true))
    	fmt.Printf("%q
    ", strconv.FormatBool(false))
    	//strconv.ParseBool	字符串转化成bool
    	fmt.Println(strconv.ParseBool("true"))
    	fmt.Println(strconv.ParseBool("false"))
    	fmt.Println(strconv.ParseBool("1"))
    	fmt.Println(strconv.ParseBool("0"))
    	fmt.Println(strconv.ParseBool("xxx")) //无法转化
    	// 字符串 <=> float
    	fmt.Println(strconv.FormatFloat(1.68, 'E', -1, 32)) //科学计算法,-1表示精度
    	fmt.Println(strconv.FormatFloat(1.68, 'f', -1, 32)) //十进制
    	fmt.Println(strconv.ParseFloat("1.34", 32))         //32位
    	fmt.Println(strconv.ParseFloat("1.34", 64))         //64位
    
    }
    
    
  • 相关阅读:
    x264
    [转贴]使用dbstart 和dbshut 脚本来自动化启动和关闭数据库
    企业搜索引擎开发之连接器connector(二十六)
    企业搜索引擎开发之连接器connector(二十五)
    深入分析 Java 中的中文编码问题
    深入分析 Java I/O 的工作机制
    企业搜索引擎开发之连接器connector(二十四)
    企业搜索引擎开发之连接器connector(二十三)
    企业搜索引擎开发之连接器connector(二十二)
    企业搜索引擎开发之连接器connector(二十一)
  • 原文地址:https://www.cnblogs.com/Otiger/p/13767020.html
Copyright © 2011-2022 走看看