Go学习——10.字符和字符串

字符和字符串处理

rune相当于go的char

package main
import (
	"fmt"
	"utf8"
)
func main() {
	s := "Yes我爱慕课网!"
	fmt.Printf("%s\n", []byte(s)) // 查看s的字符串内容,结果为"Yes我爱慕课网!"
	fmt.Printf("%X\n", []byte(s)) // 查看s的原始的字节,结果为"596573E68891E788B1E68595E8AFBEE7BD9121"
	// 打印下每个字符的原始字节
	for _, v := range []byte(s) {
		fmt.Printf("%X ", v) // 依次打印出utf-8编码 59 65 73 E6 88 91 E7 88 B1 E6 85 95 E8 AF BE E7 BD 91 21
	}
	fmt.Println("\n")
	for i, ch := range s {
		fmt.Printf("(%d %X)\n", i, ch)
		/*
			依次打印出Unicode编码:
			(0 59)
			(1 65)
			(2 73)
			(3 6211)
			(6 7231)
			(9 6155)
			(12 8BFE)
			(15 7F51)
			(18 21)
		
		*/
	}
	fmt.Println("\n")
	fmt.Println(len(s)) // 19

	// 有一个库叫utf8
	// 查看字符串长度
	fmt.Println("Rune count:", utf8.RuneCountInString(s)) // 9
	// 将编码转成字符串
	bytes := []byte(s)
	for len(bytes) > 0 {
		ch, size := utf8.DecodeRune(bytes) // 返回字符串,以及字符串的长度
		bytes = bytes[size:]
		fmt.Printf("%c ", ch) // 打印出 Y e s 我 爱 慕 课 网 !
	}
	fmt.Println()

	for i, ch := []rune(s) {
		fmt.Printf("(%d %c) ", i, ch) // 分别打印出(0 Y) (1 e) (2 s) (3 我) (4 爱) (5 慕) (6 课) (7 网) (8 !)
	}
	fmt.Println()
}
  • 总结
    • 使用range可以遍历[]rune(s),结果就是索引和对应的字符
    • 使用utf8.RuneCountInString(s)获取字符串长度
    • 使用len获得字节长度
    • 使用[]byte获得字节

字符串的操作

都在strings这个包里面

  • strings.HasPrefix(s, prefix string) bool 是否以prefixString开头,返回布尔值
  • strings.HasSuffix(s, suffix string) bool 是否以prefixString结尾,返回布尔值
  • strings.Fields(s) 根据空格分割,返回对应的slice
  • strings.Split(s, sep) 用指定的字符来对字符串进行分割,返回一个slice
  • strings.Join(s1 []string, sep string)string 用于将 元素类型为string的slice使用分隔符拼接为一个字符串
  • strings.Contains(s, str string) bool 查找子串,返回布尔值
  • strings.Index(s, str string) int 从前往后查找字符串strString是否在字符串s中,如果存在返回首次出现的索引,不存在返回-1
  • strings.LastIndex(s, str string) int 从后往前查找字符串strString是否在字符串s中,如果存在返回首次出现的索引,不存在返回-1
  • strings.IndexRune(s string, rRune) int 查找丹哥字符在字符串s中的位置,返回首次出现的索引
  • strings.Replace(str, old, new, n) string ?????????
  • string.Count(s, str string) int 统计字符串在s总出现的次数
  • strings.Repeat(s, count int ) string Repeat用于重读count字符串s并返回新的字符串 ????
  • strings.ToLower(s) string 字符串中的字符全部转换为相应的小写字符
  • strings.ToUpper(s) string 将字符串中字符全部转换为相应的大写字符
  • strings.Trim(s, “cut”): 去除开头和结尾的cut字符串
  • strings.TrimRight(s, “cut”): 去除结尾的cut字符串
  • strings.TrimLeft(s, “cut”): 去除开头的cut字符串
  • strings.TrimSpace(s) 去除字符串s两端的空白字符
  • 其他
    • 获取程序运行的操作系统所占的位数 strconv.IntSize
    • 数字类型转换为字符串类型
      • strconv.Itoa(i int) string 返回i对应的字符串的十进制数
      • strconv.FormatFloat(f float64) string: 将64位浮点型转换为字符串
    • 字符串转换为数字类型
      • strconv.Atoi(s string)(i int, err error): 将字符串转换为int类型
      • strconv.ParseFloat(s string)(f float64, err error): 将字符串类型转化为64 浮点型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值