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、使…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...