文章目录

  • GoLang之标准库unicode/utf8包
    • 1.Constants
    • 2.DecodeRune函数
    • 3.DecodeRuneInString函数
    • 3.ValidRune
    • 4.RuneLen
    • 5.RuneStart
    • 7.FullRune
    • 8.FullRuneInString
    • 9.RuneCount
    • 10.RuneCountInString
    • 11.Valid
    • 12.ValidString
    • 13.EncodeRune
    • 14.DecodeLastRune
    • 15.DecodeLastRuneInString

GoLang之标准库unicode/utf8包

1.Constants

const (RuneError = '\uFFFD'     // 错误的Rune或"Unicode replacement character"RuneSelf  = 0x80         // 低于RunSelf的字符用代表单字节的同一值表示MaxRune   = '\U0010FFFF' // 最大的合法unicode码值UTFMax    = 4            // 最大的utf-8编码的unicode字符的长度
)
func main() {var RuneError rune = '\uFFFD'var RuneSelf rune = 0x80var MaxRune rune = '\U0010FFFF'var UTFMax rune = 4fmt.Println(RuneError) //65533fmt.Println(RuneSelf)  //128fmt.Println(MaxRune)   //1114111fmt.Println(UTFMax)    //4
}

2.DecodeRune函数

函数解码p开始位置的第一个utf-8编码的码值,返回该码值和编码的字节数。
如果编码不合法,会返回(RuneError, 1)。该返回值在正确的utf-8编码情况下是不可能返回的。
如果一个utf-8编码序列格式不正确,或者编码的码值超出utf-8合法码值的范围,或者不是该码值的最短编码,该编码序列即是不合法的。函数不会执行其他的验证。

func DecodeRune(p []byte) (r rune, size int)
func main() {m := []byte{'a', 'b'}a, b := utf8.DecodeRune(m)fmt.Println(a) //91fmt.Println(b) //1
}

3.DecodeRuneInString函数

函数类似DecodeRune但输入参数是字符串。

func DecodeRuneInString(s string) (r rune, size int)
func main() {s := "eggo世界"a, b := utf8.DecodeRuneInString(s)fmt.Println(s[0])     //101fmt.Println(a)        //101fmt.Println(b)        //1fmt.Printf("%b\n", a) //1100101
}
func main() {s := "世界"a, b := utf8.DecodeRuneInString(s)fmt.Println(s[0])     //228fmt.Println(a)        //19990fmt.Println(b)        //3fmt.Printf("%b\n", a) //100111000010110
}
func main() {str := "Hello, 世界"for len(str) > 0 {r, size := utf8.DecodeRuneInString(str)fmt.Printf("%c %v\n", r, size)str = str[size:]}/*H 1e 1l 1l 1o 1, 11世 3界 3*/
}

3.ValidRune

判断r是否可以编码为合法的utf-8序列。

func ValidRune(r rune) bool
func main() {var a rune = '李'b := utf8.ValidRune(a)fmt.Println(b) //true
}

4.RuneLen

返回r编码后的字节数。如果r不是一个合法的可编码为utf-8序列的值,会返回-1。

func RuneLen(r rune) int

5.RuneStart

报告字节b是否可以作为某个rune编码后的第一个字节。第二个即之后的字节总是将左端两个字位设为10。

func RuneStart(b byte) bool

7.FullRune

报告切片p是否以一个码值的完整utf-8编码开始。不合法的编码因为会被转换为宽度1的错误码值而被视为完整的。

func FullRune(p []byte) bool
func main() {m := []byte{'a', 'b'}a := utf8.FullRune(m)fmt.Println(a) //true
}

8.FullRuneInString

函数类似FullRune但输入参数是字符串。

func FullRuneInString(s string) bool

9.RuneCount

返回p中的utf-8编码的码值的个数。错误或者不完整的编码会被视为宽度1字节的单个码值。

func RuneCount(p []byte) int

10.RuneCountInString

函数类似RuneCount但输入参数是一个字符串。

func RuneCountInString(s string) (n int)
func main() {a := utf8.RuneCountInString("李陆豪")fmt.Println(a) //3
}

11.Valid

返回切片p是否包含完整且合法的utf-8编码序列。

func Valid(p []byte) bool

12.ValidString

报告s是否包含完整且合法的utf-8编码序列。

func ValidString(s string) bool

13.EncodeRune

EncodeRune将r的utf-8编码序列写入p(p必须有足够的长度),并返回写入的字节数。

func EncodeRune(p []byte, r rune) int

14.DecodeLastRune

函数解码p中最后一个utf-8编码序列,返回该码值和编码序列的长度。

func DecodeLastRune(p []byte) (r rune, size int)

15.DecodeLastRuneInString

函数类似DecodeLastRune但输入参数是字符串。

func DecodeLastRuneInString(s string) (r rune, size int)

GoLang之标准库unicode/utf8包相关推荐

  1. GoLang之标准库net/http包源码

    GoLang之标准库net/http包源码 目录 GoLang之标准库net/http包源码 1.net/http包介绍 2.http.ListenAndServe函数 3.http.Handle函数 ...

  2. 标准库 - unicode/utf8/utf8.go 解读

    // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a B ...

  3. GoLang之标准库strings包

    文章目录 GoLang之标准库strings包 1.函数介绍 2.EqualFold 3.TrimSpace 4.HasPrefix 5.HasSuffix 6.Index 7.LastIndex 8 ...

  4. Go Go 简单的很,标准库之 fmt 包的一键入门

    文章目录 ⛳️ 实战场景 Print 系列函数 Fprint 函数 Sprint 函数 Errorf 函数 ⛳️ 格式化占位符 通用部分 整型相关 浮点数与复数 布尔型和指针 ⛳️ 标准输入 fmt. ...

  5. python标准库复数运算包cmath

    本文已整合到这里:Python内置数学模块全整理,易查易阅 cmath 即基础的复数运算包,和math有很多同名函数,但math中的函数没法进行复数计算.在python中,创建复数的方法是 x = 1 ...

  6. Golang 标准库提供的Log(一)

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://gotaly.blog.51cto.com/8861157/1405754 Gol ...

  7. Golang标准库CHM格式文档

      上手Go后,想熟悉golang标准库来做一些项目.在学习和使用golang标准库的时候,发现golang标准库文档不太友好.主要是导航区域和内容区域无法同屏浏览,在包和包间.包内不同对象间来回切换 ...

  8. Golang标准库-syscall(什么是系统调用/Go 语言中的系统调用)

    文章目录 一.什么是系统调用 二.Golang标准库-syscall 1. syscall无处不在 2. syscall demo举例: go版本的strace Strace go版本的strace ...

  9. 云原生时代崛起的编程语言Go常用标准库实战

    文章目录 基础标准库 简述 字符串-string 底层结构 函数 长度 格式化输出 模版-template text/template html/template 正则表达式-regexp 编码-en ...

最新文章

  1. Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段
  2. python while-Python天坑系列(一):while 1比while True更快?
  3. 10G_Ethernet_03 Example Design
  4. 微信小程序实现分类菜单 swiper分类菜单
  5. 中文分词之HMM模型详解
  6. SIFT(尺度不变特征变换)算法浅析
  7. python tkinter button_Python连载60-Tkinter布局、按钮以及属性详解
  8. ADO.NET 2.0 的并行控制与数据存取冲突侦测
  9. 北京最值得逛的50个地方:后海、798、簋街...
  10. dev gridcontrol 单选框效果
  11. paip.httpd.conf 是空的.txt
  12. 智慧校园APP系统开发的优势
  13. 2020-03-12
  14. 用python的xlwings模块实现excel工作表批量隐藏和取消隐藏
  15. HCIP(华为高级网络安全工程师)(实验五)(OSPF综合实验)
  16. Tensorflow Privacy
  17. Codeforces 298B Sail 题解
  18. iFixit是被破拆解Galaxy Fold?Galaxy Fold的问题点
  19. 大家在Mac系统如何使用剪切?小编介绍给大家几种Mac剪切快捷键使用技巧
  20. 条码标签打印机打印头金线包封封装用胶方案

热门文章

  1. 水果店圈子:水果店如何快速提高销售额和营业额,精品水果店如何提高营业额
  2. 芯片封装-fcCSP
  3. 蚂蚁员工爆料,研发工作真实感受
  4. 23_Python基础_面向对象封装案例(一)
  5. timeGetTime()用法
  6. SAP中基于收货的发票校验配置过程
  7. winform笔记本蓝牙与外部蓝牙设备通信
  8. 进程已不存在,但端口仍被占用,TcpView显示进程名为[non-existent]
  9. python定时执行函数
  10. Java 实现日志文件监听并读取相关数据