GoLang之标准库unicode/utf8包
文章目录
- 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包相关推荐
- GoLang之标准库net/http包源码
GoLang之标准库net/http包源码 目录 GoLang之标准库net/http包源码 1.net/http包介绍 2.http.ListenAndServe函数 3.http.Handle函数 ...
- 标准库 - unicode/utf8/utf8.go 解读
// Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a B ...
- GoLang之标准库strings包
文章目录 GoLang之标准库strings包 1.函数介绍 2.EqualFold 3.TrimSpace 4.HasPrefix 5.HasSuffix 6.Index 7.LastIndex 8 ...
- Go Go 简单的很,标准库之 fmt 包的一键入门
文章目录 ⛳️ 实战场景 Print 系列函数 Fprint 函数 Sprint 函数 Errorf 函数 ⛳️ 格式化占位符 通用部分 整型相关 浮点数与复数 布尔型和指针 ⛳️ 标准输入 fmt. ...
- python标准库复数运算包cmath
本文已整合到这里:Python内置数学模块全整理,易查易阅 cmath 即基础的复数运算包,和math有很多同名函数,但math中的函数没法进行复数计算.在python中,创建复数的方法是 x = 1 ...
- Golang 标准库提供的Log(一)
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://gotaly.blog.51cto.com/8861157/1405754 Gol ...
- Golang标准库CHM格式文档
上手Go后,想熟悉golang标准库来做一些项目.在学习和使用golang标准库的时候,发现golang标准库文档不太友好.主要是导航区域和内容区域无法同屏浏览,在包和包间.包内不同对象间来回切换 ...
- Golang标准库-syscall(什么是系统调用/Go 语言中的系统调用)
文章目录 一.什么是系统调用 二.Golang标准库-syscall 1. syscall无处不在 2. syscall demo举例: go版本的strace Strace go版本的strace ...
- 云原生时代崛起的编程语言Go常用标准库实战
文章目录 基础标准库 简述 字符串-string 底层结构 函数 长度 格式化输出 模版-template text/template html/template 正则表达式-regexp 编码-en ...
最新文章
- Python学习的十个阶段,学完大成,对应一下看看你自己在哪个阶段
- python while-Python天坑系列(一):while 1比while True更快?
- 10G_Ethernet_03 Example Design
- 微信小程序实现分类菜单 swiper分类菜单
- 中文分词之HMM模型详解
- SIFT(尺度不变特征变换)算法浅析
- python tkinter button_Python连载60-Tkinter布局、按钮以及属性详解
- ADO.NET 2.0 的并行控制与数据存取冲突侦测
- 北京最值得逛的50个地方:后海、798、簋街...
- dev gridcontrol 单选框效果
- paip.httpd.conf 是空的.txt
- 智慧校园APP系统开发的优势
- 2020-03-12
- 用python的xlwings模块实现excel工作表批量隐藏和取消隐藏
- HCIP(华为高级网络安全工程师)(实验五)(OSPF综合实验)
- Tensorflow Privacy
- Codeforces 298B Sail 题解
- iFixit是被破拆解Galaxy Fold?Galaxy Fold的问题点
- 大家在Mac系统如何使用剪切?小编介绍给大家几种Mac剪切快捷键使用技巧
- 条码标签打印机打印头金线包封封装用胶方案