golang strings包的基本操作
文章目录
- golang 的字符串函数
- EqualFold
- HasPrefix
- HasSuffix
- Contains
- ContainsRune
- ContainsAny
- Count
- Index
- IndexByte
- IndexRune
- IndexAny
- IndexFunc
- LastIndex
- LastIndexAny
- LastIndexFunc
- Title
- ToLower
- ToLowerSpecial
- ToUpper
- ToUpperSpecial
- ToTitle
- ToTitleSpecial
- Repeat
- Replace
- Map
- Trim
- TrimSpace
- TrimFunc
- TrimLeft
- TrimPrefix
- TrimRight
- TrimRightFunc
- TrimSuffix
- Fields
- Fields(s string) []string
- FieldsFunc
- Split
- SplitN
- SplitAfter
- SplitAfterN
- Reader
- NewReader
- (*Reader) Len
- (*Reader) Read
- (*Reader) ReadAt
- Replacer
- NewReplacer
- (*Replacer) Replace
- (*Replacer) WriteString
golang 的字符串函数
strings包实现了用于操作字符的简单函数.
golang 的字符串常用内建函数如下:
序号 | 方法 | 描述 |
---|---|---|
1 | EqualFold | 判断两个utf-8编码字符串(将unicode大写、小写、标题三种格式字符视为相同)是否相同。 |
2 | HasPrefix | 判断s是否有前缀字符串prefix。 |
3 | HasSuffix | 判断s是否有后缀字符串suffix。 |
4 | Contains | 断字符串s是否包含子串substr |
5 | ContainsRune | 判断字符串s是否包含utf-8码值r。 |
6 | ContainsAny | 判断字符串s是否包含字符串chars中的任一字符。 |
7 | Count | 返回字符串s中有几个不重复的sep子串。 |
8 | Index | 子串sep在字符串s中第一次出现的位置,不存在则返回-1。 |
9 | IndexByte | 字符c在s中第一次出现的位置,不存在则返回-1。 |
10 | IndexRune | unicode码值r在s中第一次出现的位置,不存在则返回-1。 |
11 | IndexAny | 字符串chars中的任一utf-8码值在s中第一次出现的位置,如果不存在或者chars为空字符串则返回-1。 |
12 | IndexFunc | s中第一个满足函数f的位置i(该处的utf-8码值r满足f®==true),不存在则返回-1。 |
13 | LastIndex | 子串sep在字符串s中最后一次出现的位置,不存在则返回-1。 |
14 | LastIndexAny | 字符串chars中的任一utf-8码值在s中最后一次出现的位置,如不存在或者chars为空字符串则返回-1。 |
15 | LastIndexFunc | s中最后一个满足函数f的unicode码值的位置i,不存在则返回-1。 |
16 | Title | 返回s中每个单词的首字母都改为标题格式的字符串拷贝。BUG: Title用于划分单词的规则不能很好的处理Unicode标点符号。 |
17 | ToLower | 返回将所有字母都转为对应的小写版本的拷贝。 |
18 | ToLowerSpecial | 使用_case规定的字符映射,返回将所有字母都转为对应的小写版本的拷贝。 |
19 | ToUpper | 返回将所有字母都转为对应的大写版本的拷贝。 |
20 | ToUpperSpecial | 使用_case规定的字符映射,返回将所有字母都转为对应的大写版本的拷贝。返回将所有字母都转为对应的大写版本的拷贝。 |
21 | ToTitle | 返回将所有字母都转为对应的标题版本的拷贝。 |
22 | ToTitleSpecial | 使用_case规定的字符映射,返回将所有字母都转为对应的标题版本的拷贝。 |
23 | Repeat | 返回count个s串联的字符串。 |
24 | Replace | 返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。 |
25 | Map | 将s的每一个unicode码值r都替换为mapping®,返回这些新码值组成的字符串拷贝。如果mapping返回一个负值,将会丢弃该码值而不会被替换。(返回值中对应位置将没有码值) |
26 | Trim | 返回将s前后端所有cutset包含的utf-8码值都去掉的字符串。 |
27 | TrimSpace | 返回将s前后端所有空白(unicode.IsSpace指定)都去掉的字符串。 |
28 | TrimFunc | 返回将s前后端所有满足f的unicode码值都去掉的字符串。 |
29 | TrimLeft | 返回将s前端所有cutset包含的utf-8码值都去掉的字符串。 |
30 | TrimLeftFunc | 返回将s前端所有满足f的unicode码值都去掉的字符串。 |
31 | TrimPrefix | 返回去除s可能的前缀prefix的字符串。 |
32 | TrimRight | 返回将s后端所有cutset包含的utf-8码值都去掉的字符串。 |
33 | TrimRightFunc | 返回将s后端所有满足f的unicode码值都去掉的字符串。 |
34 | TrimSuffix | 返回去除s可能的后缀suffix的字符串。 |
35 | Fields | 返回将字符串按照空白(unicode.IsSpace确定,可以是一到多个连续的空白字符)分割的多个字符串。如果字符串全部是空白或者是空字符串的话,会返回空切片。 |
36 | FieldsFunc | 类似Fields,但使用函数f来确定分割符(满足f的unicode码值)。如果字符串全部是分隔符或者是空字符串的话,会返回空切片。 |
37 | Split | 用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。 |
38 | SplitN | 用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。参数n决定返回的切片的数目: n > 0 : 返回的切片最多n个子字符串;最后一个子字符串包含未进行切割的部分。n == 0: 返回nil n < 0 : 返回所有的子字符串组成的切片 |
39 | SplitAfter | 用从s中出现的sep后面切断的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。 |
40 | SplitAfterN | 用从s中出现的sep后面切断的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。参数n决定返回的切片的数目:n > 0 : 返回的切片最多n个子字符串;最后一个子字符串包含未进行切割的部分。n == 0: 返回niln < 0 : 返回所有的子字符串组成的切 |
41 | Join | 将一系列字符串连接为一个字符串,之间用sep来分隔。 |
关于type Reader 和 type Replacer操作文档链接:
https://studygolang.com/pkgdoc
EqualFold
func EqualFold(s, t string) bool
判断两个utf-8编码字符串(将unicode大写、小写、标题三种格式字符视为相同)是否相同。
var name1 = "艾拉"var name2 = "艾拉"var name3 = "伊雷娜"fmt.Println(strings.EqualFold(name1, name2)) // turefmt.Println(strings.EqualFold(name1, name3)) // false
HasPrefix
func HasPrefix(s, prefix string) bool
判断s是否有前缀字符串prefix。
var name1 = "艾拉"var name2 = "伊"var name3 = "艾"fmt.Println(strings.HasPrefix(name1, name2)) // falsefmt.Println(strings.HasPrefix(name1, name3)) // true
HasSuffix
func HasSuffix(s, suffix string) bool
判断s是否有后缀字符串suffix。
var name1 = "艾拉"var name2 = "拉"var name3 = "艾"fmt.Println(strings.HasSuffix(name1, name2)) // truefmt.Println(strings.HasSuffix(name1, name3)) // false
Contains
func Contains(s, substr string) bool
判断字符串s是否包含子串substr。
Contains() 函数用于检查字符串 str 是否包含子字符串 substr。
它基于字节的比较,判断 str 中是否存在与 substr 相同的字节序列。
判断一个字符串中是否包含一个普通的ASCII字符比ContainsRune更为高效
var string1 = "可塑性记忆"var string2 = "记忆"var string3 = "艾"fmt.Println(strings.Contains(string1, string2)) // truefmt.Println(strings.Contains(string1, string3)) // false
ContainsRune
func ContainsRune(s string, r rune) bool
判断字符串s是否包含utf-8码值r。
var string1 = "可塑性记忆"var string2 = '记' // 单引号 ' 用于表示一个 Unicode 码点,而双引号 " 用于表示一个字符串var string3 = '艾'fmt.Println(string2, string3) // 35760 33406fmt.Println(strings.ContainsRune(string1, string2)) // truefmt.Println(strings.ContainsRune(string1, string3)) // false
ContainsAny
func ContainsAny(s, chars string) bool
判断字符串s是否包含字符串chars中的任一字符。
var string1 = "可塑性记忆"var string2 = "qwq记"fmt.Println(strings.ContainsAny(string1, string2)) // true// 简单的说string2 只要有一个字符在string1里面就会返回true,一个都没有就会返回false
Count
func Count(s, sep string) int
返回字符串s中有几个不重复的sep子串。
var string1 = "可塑性记忆,艾拉艾拉"var string2 = "艾拉"fmt.Println(strings.Count(string1, string2)) // 2
Index
func Index(s, sep string) int
子串sep在字符串s中第一次出现的位置,不存在则返回-1。
var string1 = "可塑性记忆,艾拉艾拉"var string2 = "艾拉"//在 UTF-8 编码中 中文字符占用 3 个字节,而英文字符占用 1 个字节. 5*3 + 1fmt.Println(strings.Index(string1, string2)) // 16var string3 = "yanilo"var string4 = "l"fmt.Println(strings.Index(string3, string4)) // 4
IndexByte
func IndexByte(s string, c byte) int
字符c在s中第一次出现的位置,不存在则返回-1。
IndexByte 是一个函数,用于在字节切片中查找指定字节的索引位置
byteSlice := []byte{10, 20, 30, 40, 50}index := bytes.IndexByte(byteSlice, 30)fmt.Println(index) // 输出:2
IndexRune
func IndexRune(s string, r rune) int
unicode码值r在s中第一次出现的位置,不存在则返回-1。
IndexRune 是一个函数,字符串中使用 strings.IndexRune 函数查找 Unicode 字符的索引位置时,返回的索引位置是以 Unicode 码点为单位的,而不是字节位置
str := "ke可塑性记忆,艾拉艾拉"index := strings.IndexRune(str, '艾')fmt.Println(index) // 输出:18
IndexAny
func IndexAny(s, chars string) int
字符串chars中的任一utf-8码值在s中第一次出现的位置,如果不存在或者chars为空字符串则返回-1。
str := "ke可塑性记忆,艾拉艾拉"charset := "艾塑"index := strings.IndexAny(str, charset)fmt.Println(index) // 输出:5
IndexFunc
func IndexFunc(s string, f func(rune) bool) int
s中第一个满足函数f的位置i(该处的utf-8码值r满足f®==true),不存在则返回-1。
f := func(c rune) bool {return unicode.Is(unicode.Han, c)}fmt.Println(strings.IndexFunc("Hello, 世界", f)) // 输出:7fmt.Println(strings.IndexFunc("Hello, world", f)) // 输出:-1
LastIndex
func LastIndex(s, sep string) int
子串sep在字符串s中最后一次出现的位置,不存在则返回-1。
str := "Hello, Hello, Hello"substr := "Hello"lastIndex := strings.LastIndex(str, substr)fmt.Println(lastIndex) // 输出:14
LastIndexAny
func LastIndexAny(s, chars string) int
字符串chars中的任一utf-8码值在s中最后一次出现的位置,如不存在或者chars为空字符串则返回-1。
str := "Hello, World!"chars := "o!"lastIndex := strings.LastIndexAny(str, chars)fmt.Println(lastIndex) // 输出:12
LastIndexFunc
func LastIndexFunc(s string, f func(rune) bool) int
s中最后一个满足函数f的unicode码值的位置i,不存在则返回-1。
str := "Hello, World!"// unicode.IsSpace 是一个函数,用于判断一个 Unicode 字符是否为空格字符。lastIndex := strings.LastIndexFunc(str, unicode.IsSpace)fmt.Println(lastIndex) // 输出:6
Title
func Title(s string) string
返回s中每个单词的首字母都改为标题格式的字符串拷贝。
str := "hello, world!"titleString := strings.Title(str)fmt.Println(titleString) // 输出:Hello, World!
BUG: Title用于划分单词的规则不能很好的处理Unicode标点符号。
ToLower
func ToLower(s string) string
返回将所有字母都转为对应的小写版本的拷贝。
str := "Hello, World!"lowerString := strings.ToLower(str)fmt.Println(lowerString) // 输出:hello, world!
ToLowerSpecial
func ToLowerSpecial(_case unicode.SpecialCase, s string) string
使用_case规定的字符映射,返回将所有字母都转为对应的小写版本的拷贝。
ToLowerSpecial 是一个字符串处理函数,用于将字符串中的所有字符转换为小写形式,但可以指定特定的语言环境。
str := "HÉLLÖ, WÖRLD!"locale := unicode.TurkishCaselowerString := strings.ToLowerSpecial(locale, str)fmt.Println(lowerString) // 输出:héllö, wörld!
ToUpper
func ToUpper(s string) string
返回将所有字母都转为对应的大写版本的拷贝。
ToUpper 是一个字符串处理函数,用于将字符串中的所有字符转换为大写形式。
str := "Hello, World!"upperString := strings.ToUpper(str)fmt.Println(upperString) // 输出:HELLO, WORLD!
ToUpperSpecial
func ToUpperSpecial(_case unicode.SpecialCase, s string) string
使用_case规定的字符映射,返回将所有字母都转为对应的大写版本的拷贝。
ToUpperSpecial 是一个字符串处理函数,用于将字符串中的所有字符转换为大写形式,但可以指定特定的语言环境。
str := "héllö, wörld!"locale := unicode.TurkishCaseupperString := strings.ToUpperSpecial(locale, str)fmt.Println(upperString) // 输出:HÉLLÖ, WÖRLD!
ToTitle
func ToTitle(s string) string
返回将所有字母都转为对应的标题版本的拷贝。
str := "hello, world!"titleString := strings.ToTitle(str)fmt.Println(titleString) // 输出:HELLO, WORLD!
ToTitleSpecial
func ToTitleSpecial(_case unicode.SpecialCase, s string) string
使用_case规定的字符映射,返回将所有字母都转为对应的标题版本的拷贝。
ToTitleSpecial 是一个字符串处理函数,用于将字符串中的所有字符转换为标题形式,但可以指定特定的语言环境。
str := "héllö, wörld!"locale := unicode.TurkishCasetitleString := strings.ToTitleSpecial(locale, str)fmt.Println(titleString) // 输出:HÉLLÖ, WÖRLD!
Repeat
func Repeat(s string, count int) string
返回count个s串联的字符串。
Repeat 是一个字符串处理函数,用于将指定的字符串重复多次以生成一个新的字符串。
str := "hello"repeatedString := strings.Repeat(str, 3)fmt.Println(repeatedString) // 输出:hellohellohello
Replace
func Replace(s, old, new string, n int) string
返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。
Replace 是一个字符串处理函数,用于将字符串中的指定子串替换为新的子串。
str := "Hello, World!"newStr := strings.Replace(str, "World", "Golang", -1)fmt.Println(newStr) // 输出:Hello, Golang!
Map
func Map(mapping func(rune) rune, s string) string
将s的每一个unicode码值r都替换为mapping®,返回这些新码值组成的字符串拷贝。如果mapping返回一个负值,将会丢弃该码值而不会被替换。(返回值中对应位置将没有码值)
strings.Map 是 Go 语言中的一个字符串处理函数,用于对字符串中的每个字符执行指定的操作,并返回一个新的字符串。
str := "Hello, World!"newStr := strings.Map(func(r rune) rune {if r == '!' {return '#'}return r}, str)fmt.Println(newStr) // 输出:Hello, World#
Trim
func Trim(s string, cutset string) string
返回将s前后端所有cutset包含的utf-8码值都去掉的字符串。
Trim 是一个常见的字符串处理操作,用于去除字符串的首尾指定字符或字符集合。
str := "--- Hello, World! ----"trimmedStr := strings.Trim(str, "-")fmt.Println(trimmedStr) // 输出: Hello, World!trimmedStr2 := strings.Trim(trimmedStr, " ")fmt.Println(trimmedStr2) // 输出:Hello, World!
TrimSpace
func TrimSpace(s string) string
返回将s前后端所有空白(unicode.IsSpace指定)都去掉的字符串。
TrimSpace 是 Go 语言中的一个字符串处理函数,用于去除字符串首尾的空格符(包括空格、制表符和换行符)。
str := " Hello, World! "trimmedStr := strings.TrimSpace(str)fmt.Println(trimmedStr) // 输出:Hello, World!
TrimFunc
func TrimFunc(s string, f func(rune) bool) string
返回将s前后端所有满足f的unicode码值都去掉的字符串。
TrimFunc 是 Go 语言中的一个字符串处理函数,用于根据自定义的函数逻辑来去除字符串的首尾字符。
str := " Hello, World! "// unicode.IsSpace 是一个函数,用于判断一个 Unicode 字符是否为空格字符。trimmedStr := strings.TrimFunc(str, unicode.IsSpace)fmt.Println(trimmedStr) // 输出:Hello, World!
TrimLeft
func TrimLeft(s string, cutset string) string
返回将s前端所有cutset包含的utf-8码值都去掉的字符串。
TrimLeft 是 Go 语言中的一个字符串处理函数,用于去除字符串开头的指定字符。
str := "!!!Hello, World!!!"trimmedStr := strings.TrimLeft(str, "!")fmt.Println(trimmedStr) // 输出:Hello, World!!!
func TrimLeftFunc
func TrimLeftFunc(s string, f func(rune) bool) string
返回将s前端所有满足f的unicode码值都去掉的字符串。
TrimLeftFunc 是 Go 语言中的一个字符串处理函数,用于根据自定义的函数逻辑来去除字符串开头的字符。
str := "!!!Hello, World!!!"// unicode.IsPunct 是 Go 语言中的一个函数,用于判断给定的 Unicode 字符是否为标点符号。trimmedStr := strings.TrimLeftFunc(str, unicode.IsPunct)fmt.Println(trimmedStr) // 输出:Hello, World!!!
TrimPrefix
func TrimPrefix(s, prefix string) string
返回去除s可能的前缀prefix的字符串。
TrimPrefix 是 Go 语言中的一个字符串处理函数,用于去除字符串开头的指定前缀。
str := "Hello, World!"trimmedStr := strings.TrimPrefix(str, "Hello, ")fmt.Println(trimmedStr) // 输出:World!
TrimRight
func TrimRight(s string, cutset string) string
返回将s后端所有cutset包含的utf-8码值都去掉的字符串。
TrimRight 是 Go 语言中的一个字符串处理函数,用于去除字符串末尾的指定字符集合。
str := "Hello, World!!!"trimmedStr := strings.TrimRight(str, "!")fmt.Println(trimmedStr) // 输出:Hello, World
TrimRightFunc
func TrimRightFunc(s string, f func(rune) bool) string
返回将s后端所有满足f的unicode码值都去掉的字符串。
TrimRightFunc 是 Go 语言中的一个字符串处理函数,用于根据自定义的函数逻辑去除字符串末尾的字符。
str := "Hello, World!!!"// unicode.IsPunct 是 Go 语言中的一个函数,用于判断给定的 Unicode 字符是否为标点符号。trimmedStr := strings.TrimRightFunc(str, unicode.IsPunct)fmt.Println(trimmedStr) // 输出:Hello, World
}
TrimSuffix
func TrimSuffix(s, suffix string) string
返回去除s可能的后缀suffix的字符串。
TrimSuffix 是 Go 语言中的一个字符串处理函数,用于去除字符串末尾的指定后缀。
str := "Hello, World!!!"trimmedStr := strings.TrimSuffix(str, "!!!")fmt.Println(trimmedStr) // 输出:Hello, World
Fields
Fields(s string) []string
返回将字符串按照空白(unicode.IsSpace确定,可以是一到多个连续的空白字符)分割的多个字符串。如果字符串全部是空白或者是空字符串的话,会返回空切片。
strings.Fields 是 Go 语言中的一个字符串处理函数,用于将字符串按空白字符分割成多个子字符串,并返回一个子字符串的切片。
str := "Hello World\tGolang\nProgramming"fields := strings.Fields(str)fmt.Println(fields) // [Hello World Golang Programming]for _, field := range fields {fmt.Println(field)//Hello//World//Golang//Programming}
FieldsFunc
func FieldsFunc(s string, f func(rune) bool) []string
类似Fields,但使用函数f来确定分割符(满足f的unicode码值)。如果字符串全部是分隔符或者是空字符串的话,会返回空切片。
FieldsFunc 是 Go 语言中的一个字符串处理函数,用于将字符串按照自定义的分隔函数进行分割,并返回一个子字符串的切片。
str := "Hello, World! Golang Programming"// unicode.IsSpace 是 Go 语言中的一个函数,用于判断一个 Unicode 字符是否为空白字符。fields := strings.FieldsFunc(str, func(r rune) bool {return unicode.IsSpace(r) || r == '!'})fmt.Println(fields) // [Hello, World Golang Programming]for _, field := range fields {fmt.Println(field)// Hello,// World// Golang// Programming}
Split
func Split(s, sep string) []string
用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。
str := "Hello, World! Golang Programming"fields := strings.Split(str, ", ")fmt.Println(fields) // [Hello World! Golang Programming]for _, field := range fields {fmt.Println(field)// Hello// World! Golang Programming}
SplitN
func SplitN(s, sep string, n int) []string
用去掉s中出现的sep的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。参数n决定返回的切片的数目:
SplitN 是 Go 语言中的一个字符串处理函数,用于将字符串按照指定的分隔符进行分割,并返回一个子字符串的切片。与 Split 函数不同的是,SplitN 函数可以指定最大分割次数。
n > 0 : 返回的切片最多n个子字符串;最后一个子字符串包含未进行切割的部分。
n == 0: 返回nil
n < 0 : 返回所有的子字符串组成的切片
SplitN 是 Go 语言中的一个字符串处理函数,用于将字符串按照指定的分隔符进行分割,并返回一个子字符串的切片。与 Split 函数不同的是,SplitN 函数可以指定最大分割次数。
str := "Hello, World! Golang Programming"fields := strings.SplitN(str, ", ", 2)fmt.Println(fields) // [Hello World! Golang Programming]for _, field := range fields {fmt.Println(field)// Hello// World! Golang Programming}
SplitAfter
func SplitAfter(s, sep string) []string
用从s中出现的sep后面切断的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。
SplitAfter 是 Go 语言中的一个字符串处理函数,用于将字符串按照指定的分隔符进行分割,并返回一个子字符串的切片。与 Split 函数不同的是,SplitAfter 函数在分割时会保留分隔符。
str := "Hello, World! Golang Programming."fields := strings.SplitAfter(str, ", ")fmt.Println(fields) // [Hello, World! Golang Programming.]for _, field := range fields {fmt.Println(field)// Hello,// World! Golang Programming.}
SplitAfterN
func SplitAfterN(s, sep string, n int) []string
用从s中出现的sep后面切断的方式进行分割,会分割到结尾,并返回生成的所有片段组成的切片(每一个sep都会进行一次切割,即使两个sep相邻,也会进行两次切割)。如果sep为空字符,Split会将s切分成每一个unicode码值一个字符串。参数n决定返回的切片的数目:
n > 0 : 返回的切片最多n个子字符串;最后一个子字符串包含未进行切割的部分。
n == 0: 返回nil
n < 0 : 返回所有的子字符串组成的切
Example
func Join
func Join(a []string, sep string) string
将一系列字符串连接为一个字符串,之间用sep来分隔。
SplitAfterN 是 Go 语言中的一个字符串处理函数,用于将字符串按照指定的分隔符进行分割,并返回一个子字符串的切片。与 SplitN 函数不同的是,SplitAfterN 函数在分割时会保留分隔符。
str := "Hello, World! Golang Programming."fields := strings.SplitAfterN(str, ", ", 2)fmt.Println(fields) // [Hello, World! Golang Programming.]for _, field := range fields {fmt.Println(field)// Hello,// World! Golang Programming.}
Reader
type Reader struct {
// 内含隐藏或非导出字段
}
Reader类型通过从一个字符串读取数据,实现了io.Reader、io.Seeker、io.ReaderAt、io.WriterTo、io.ByteScanner、io.RuneScanner接口。
Reader 是 Go 语言中的一个接口(interface),定义了读取操作的基本方法。Reader 接口可以用于从不同的数据源(如文件、网络连接、内存等)读取数据。
reader := strings.NewReader("Hello, World!")buffer := make([]byte, 5)for {n, err := reader.Read(buffer)if err == io.EOF {break}/*io.EOF 是 Go 语言中的一个预定义错误变量,表示输入或输出操作已达到文件末尾(End of File)。EOF 是 "End of File" 的缩写。当读取操作(如从文件、网络连接或其他数据源读取数据)达到文件末尾时,读取函数通常会返回 io.EOF 错误,以指示已经读取完所有的数据。*/fmt.Printf("Read %d bytes: %s\n", n, buffer[:n])// Read 5 bytes: Hello// Read 5 bytes: , Wor// Read 3 bytes: ld!}
NewReader
func NewReader(s string) *Reader
NewReader创建一个从s读取数据的Reader。本函数类似bytes.NewBufferString,但是更有效率,且为只读的。
(*Reader) Len
func (r *Reader) Len() int
Len返回r包含的字符串还没有被读取的部分。
(*Reader) Read
func (r *Reader) Read(b []byte) (n int, err error)
func (*Reader) ReadByte
func (r *Reader) ReadByte() (b byte, err error)
func (*Reader) UnreadByte
func (r *Reader) UnreadByte() error
func (*Reader) ReadRune
func (r *Reader) ReadRune() (ch rune, size int, err error)
func (*Reader) UnreadRune
func (r *Reader) UnreadRune() error
func (*Reader) Seek
func (r *Reader) Seek(offset int64, whence int) (int64, error)
Seek实现了io.Seeker接口。
(*Reader) ReadAt
func (r *Reader) ReadAt(b []byte, off int64) (n int, err error)
func (*Reader) WriteTo
func (r *Reader) WriteTo(w io.Writer) (n int64, err error)
WriteTo实现了io.WriterTo接口。
Replacer
type Replacer struct {
// 内含隐藏或非导出字段
}
Replacer类型进行一系列字符串的替换。
NewReplacer
func NewReplacer(oldnew …string) Replacer
使用提供的多组old、new字符串对创建并返回一个Replacer。替换是依次进行的,匹配时不会重叠。
(*Replacer) Replace
func (r *Replacer) Replace(s string) string
Replace返回s的所有替换进行完后的拷贝。
(*Replacer) WriteString
func (r *Replacer) WriteString(w io.Writer, s string) (n int, err error)
WriteString向w中写入s的所有替换进行完后的拷贝。
相关文章:
golang strings包的基本操作
文章目录 golang 的字符串函数EqualFoldHasPrefixHasSuffixContainsContainsRuneContainsAnyCountIndexIndexByteIndexRuneIndexAnyIndexFuncLastIndexLastIndexAnyLastIndexFuncTitleToLowerToLowerSpecialToUpperToUpperSpecialToTitleToTitleSpecialRepeatReplaceMapTrimTri…...

高效解决在本地打开可视化服务器端的tensorboard
文章目录 问题解决方案 问题 由于连着远程服务器构建模型,但是想在本地可视化却做不到,不要想当然天真的以为CTRLC点击链接http://localhost:6006就真能在本地打开tensorboard。你电脑都没连接服务器,只是pycharm连上了而已 解决方案 你需要…...

Spring Boot Actuator 2.2.5 基本使用
1. pom文件 ,添加 Actuator 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> 2.application.properties 文件中添加以下配置 …...

字符串相似度匹配算法_莱茵斯坦距离算法
package day0330;public class LevenshteinDistanceUtil {public static void main(String[] args) {String a "WN64 F98";String b "WN64 F98 ";System.out.println("相似度:" getSimilarityRatio(a, b));}/*** 获取两字符串的相似度* * par…...

【EI会议征稿】第九届电气、电子和计算机工程研究国际学术研讨会 (ISAEECE 2024)
第九届电气、电子和计算机工程研究国际学术研讨会 (ISAEECE 2024) 2024 9th International Symposium on Advances in Electrical, Electronics and Computer Engineering 第九届电气、电子和计算机工程研究国际学术研讨会(ISAEECE 2024)将于2024年3月1-5日在南…...

Maven Helper插件——实现一键Maven依赖冲突问题
总结/朱季谦 业余在一个SpringBoot项目集成Swagger2时,启动过程一直出现以下报错信息—— An attempt was made to call a method that does not exist. The attempt was made from the following location: springfox.documentation.schema.DefaultModelDepe…...

理解位运算的规则
关卡名 理解位运算的规则 我会了✔️ 内容 1.理解位运算的基本规则 ✔️ 2.理解移位的原理以及与乘除的关系 ✔️ 3.掌握位运算的常用技巧 ✔️ 在学习位操作之前,我们先明确数据在计算机中怎么表示的。我们明确原码、反码和补码的概念和表示方法,之…...

Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊
文章目录 Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊使用 RenderEffect 模糊使用 Vukan 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比 Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊 本文首发地址 https://blog.csdn.net/CSqingchen/articl…...

Vue H5页面长按保存为图片
安装依赖:npm install html2canvas -d <template><div class"index"><div id"captureId" class"capture" v-show"firstFlag"><ul><li>1</li><li>2</li><li>3<…...

【Web】UUCTF 2022 新生赛 个人复现
目录 ①websign ②ez_rce ③ez_upload ④ez_unser ⑤ezsql ⑥ezpop ⑦funmd5 ⑧phonecode ⑨ezrce ①websign 右键打不开,直接抓包发包看源码 ②ez_rce “反引号” 在PHP中会被当作SHELL命令执行 ?codeprintf(l\s /); ?codeprintf(ta\c /ffffffffffl…...
设置python下载包代理
使用场景 正常网络情况下我们安装如果比较多的python包时,会选择使用pip install -r requirements.txt -i https://pypi.douban.com/simple --trusted-hostpypi.douban.com这种国内的镜像来加快下载速度。 但是,当这台被限制上网时(公司安全…...

nginx 配置前端项目添加https
可申请阿里云免费证书 步骤省略… nginx 配置 server {listen 8050; #默认80端口 如果需要所有访问地址都是https 需要注释listen 8443 ssl; #https 访问的端口 ,默认443server_name 192.168.128.XX; #域名 或 ip# 增加ssl#填写证书文件…...
人群计数CSRNet的pytorch实现
本文中对CSRNet: Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes(CVPR 2018)中的模型进行pytorch实现 import torch;import torch.nn as nn from torchvision.models import vgg16 vggvgg16(pretrained1)import…...

【HTTP协议】简述HTTP协议的概念和特点
🎊专栏【网络编程】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🥰欢迎并且感谢大家指出小吉的问题 文章目录 🌺概念🌺特点🎄请求协议🎄响应协议…...

经典神经网络——AlexNet模型论文详解及代码复现
一、背景 AlexNet是在2012年由Alex Krizhevsky等人提出的,该网络在2012年的ImageNet大赛上夺得了冠军,并且错误率比第二名高了很多。Alexnet共有8层结构,前5层为卷积层,后三层为全连接层。 论文地址:ImageNet Classif…...

flutter开发实战-轮播Swiper更改Custom_layout样式中Widget层级
flutter开发实战-轮播Swiper更改Custom_layout样式中Widget层级 在之前的开发过程中,需要实现卡片轮播效果,但是卡片轮播需要中间大、两边小一些的效果,这里就使用到了Swiper。具体效果如视频所示 添加链接描述 这里需要的效果是中间大、两边…...

【Flutter】graphic图表实现自定义tooltip
renderer graphic中tooltip的TooltipGuide类提供了renderer方法,接收三个参数Size类型,Offset类型,Map<int, Tuple>类型。可查到的文档是真的少,所以只能在源码中扒拉例子,做符合需求的修改。 官方github示例 …...

手机上的记事本怎么打开?安卓手机通用的记事本APP
有不少上班族发现,自己想要在电脑上随手记录一些工作文字内容,直接使用电脑上的记事本工具来编辑文字是比较便捷的。但是如果想要在手机上记录文字内容,就找不到手机上的记事本了。那么手机上的记事本怎么打开?安卓手机通用的记事…...

一起学docker系列之十五深入了解 Docker Network:构建容器间通信的桥梁
目录 1 前言2 什么是 Docker Network3 Docker Network 的不同模式3.1 桥接模式(Bridge)3.2 Host 模式3.3 无网络模式(None)3.4 容器模式(Container) 4 Docker Network 命令及用法4.1 docker network ls4.2 …...

前端OFD文件预览(vue案例cafe-ofd)
0、提示 下面只有vue的使用示例demo ,官文档参考 cafe-ofd - npm 其他平台可以参考 ofd - npm 官方线上demo: ofd 1、安装包 npm install cafe-ofd --save 2、引入 import cafeOfd from cafe-ofd import cafe-ofd/package/index.css Vue.use(cafeOfd) 3、使…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...