zoukankan      html  css  js  c++  java
  • go字符串操作

    go字符串

    Golang中的字符串是一个不可改变的UTF-8字符序列,一个ASCII码占用1个字节,其它字符根据需要占用2-4个字节。

    获取字符串长度

    Go语言的内建函数len(),可以用来获取切片、字符串、通道(channel)等的长度。下面的代码可以用len()来获取字符串的长度:

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	str1 := "ZG"
    	str2 := "中国"
    	fmt.Println(len(str1))  // 2
    	fmt.Println(len(str2))  // 6
    }
    

    这里的差异是由于Go语言的字符串都以UTF-8格式保存,每个中文占用3个字节,因此使用len()获得两个中文文字对应的6个字节。
    如果希望按习惯上的字符个数来计算,就需要使用Go语言中UTF-8包提供的RuneCountInString()函数,统计Uncode字符数量:

    package main
    
    import (
    	"fmt"
    	"unicode/utf8"
    )
    
    func main() {
    	str := "中国"
    	fmt.Println(utf8.RuneCountInString(str)) // 2
    }
    

    截取子字符串

    可以通过下面的语法截取字符串中的内容:

    s := "abcdef"
    // 截取s[1, 4)作为子字符串
    s1 := s[1:4]    // bcd
    

    修改字符串

    要修改字符串的内容,可以先将字符串的内容复制到一个可写的变量中,一般是 []byte 或 []rune 类型的变量,然后再进行修改:

    package main
    
    import (
    	"fmt"
    )
    
    func main() {
    	s := "hello,世界"
    	bs := []byte(s)
    	rs := []rune(s)
    	bs[0] = 'e'
    	rs[6] = '神'
    	fmt.Println(string(bs), string(rs))
    }
    

    忽略大小写比较字符串是否相等

    package main
    
    import (
    	"fmt"
    	"strings"
    )
    
    func main() {
    	for {
    		var name1, name2 string
    		fmt.Scanln(&name1)
    		fmt.Scanln(&name2)
    		fmt.Println(name1 == name2)
    		fmt.Println(strings.EqualFold(name1, name2))
    	}
    }
    

    和其它类型相互转换

    • int和string类型转换:
    package main
    
    import (
    	"fmt"
    	"strconv"
    )
    
    func main() {
    	n := 10
    	str := strconv.Itoa(n)
    	n2, err := strconv.Atoi(str)
    	if nil != err {
    		fmt.Println(err.Error())
    	}
    	fmt.Println(n, n2)
    }
    

    拼接字符串

    package main
    
    import (
    	"fmt"
    	"strconv"
    	"strings"
    )
    
    func main() {
    	n := 100
    	strs := make([]string, n)
    	for i := 0; i < n; i++ {
    		strs[i] = strconv.Itoa(i)
    	}
    	s := strings.Join(strs, "+")
    	fmt.Println(s)
    }
    

    读取一行

    package main
    
    import (
    	"bufio"
    	"fmt"
    	"os"
    )
    
    func main() {
    	input := bufio.NewScanner(os.Stdin)
    	input.Scan()
    	s := input.Text()
    	fmt.Println(s)
    }
    
  • 相关阅读:
    二分类下的混淆矩阵
    多项式的回归
    使用变换来提升单回归准确度的一个反例
    使用OpenOffice.org将各类文档转为PDF
    22 Best Sites To Download Free Sprites
    给Libgdx的ShapeRenderer开启抗锯齿
    How get a String Width in Libgdx?
    JS实现IE下打印和打印预览
    spring-mvc不拦截静态资源的配置
    This Android SDK requires Android Developer Toolkit version 23.0.0 or above
  • 原文地址:https://www.cnblogs.com/HachikoT/p/13953851.html
Copyright © 2011-2022 走看看