golang中strings包用法

释放双眼,带上耳机,听听看~!

1.strings.Split
/ Split 以 sep 为分隔符,将 s 切分成多个子切片,结果中不包含 sep 本身
// 如果 sep 为空,则将 s 切分成 Unicode 字符列表。
// 如果 s 中没有 sep 子串,则将整个 s 作为 []string 的第一个元素返回


1
2
3
4
5
6
7
8
9
10
11
12
1func Split(s, sep string) []string
2func main() {
3   s := "Hello, 世界! Hello!"
4   ss := strings.Split(s, " ")
5   fmt.Printf("%q\n", ss) // ["Hello," "世界!" "Hello!"]
6   ss = strings.Split(s, ", ")
7   fmt.Printf("%q\n", ss) // ["Hello" "世界! Hello!"]
8   ss = strings.Split(s, "")
9   fmt.Printf("%q\n", ss) // 单个字符列表
10}
11
12

2.strings.SplitAfter
// SplitAfter 以 sep 为分隔符,将 s 切分成多个子切片,结果中包含 sep 本身
// 如果 sep 为空,则将 s 切分成 Unicode 字符列表。
// 如果 s 中没有 sep 子串,则将整个 s 作为 []string 的第一个元素返回


1
2
3
4
5
6
7
8
9
10
11
12
1func SplitAfter(s, sep string) []string
2func main() {
3   s := "Hello, 世界! Hello!"
4   ss := strings.SplitAfter(s, " ")
5   fmt.Printf("%q\n", ss) // ["Hello, " "世界! " "Hello!"]
6   ss = strings.SplitAfter(s, ", ")
7   fmt.Printf("%q\n", ss) // ["Hello, " "世界! Hello!"]
8   ss = strings.SplitAfter(s, "")
9   fmt.Printf("%q\n", ss) // 单个字符列表
10}
11
12

3. strings.Join
// Join 将 a 中的子串连接成一个单独的字符串,子串之间用 sep 分隔


1
2
3
4
5
6
7
8
1func Join(a []string, sep string) string
2func main() {
3   ss := []string{"Monday", "Tuesday", "Wednesday"}
4   s := strings.Join(ss, "|")
5   fmt.Println(s)
6}
7
8

4.trings.Repeat
// Repeat 将 count 个字符串 s 连接成一个新的字符串


1
2
3
4
5
6
7
8
1func Repeat(s string, count int) string
2func main() {
3   s := "Hello!"
4   rs := strings.Repeat(s, 3)
5   fmt.Printf("%q\n", rs) // "Hello!Hello!Hello!"
6}
7
8

// ToUpper 将 s 中的所有字符修改为其大写格式
// 对于非 ASCII 字符,它的大写格式需要查表转换
func ToUpper(s string) string

// ToLower 将 s 中的所有字符修改为其小写格式
// 对于非 ASCII 字符,它的小写格式需要查表转换
func ToLower(s string) string

// ToTitle 将 s 中的所有字符修改为其 Title 格式
// 大部分字符的 Title 格式就是其 Upper 格式
// 只有少数字符的 Title 格式是特殊字符
// 这里的 ToTitle 主要给 Title 函数调用


1
2
3
4
5
6
7
8
9
10
11
12
1func ToTitle(s string) string
2func main() {
3   s := "heLLo worLd Abc"
4   us := strings.ToUpper(s)
5   ls := strings.ToLower(s)
6   ts := strings.ToTitle(s)
7   fmt.Printf("%q\n", us) // "HELLO WORLD ABC"
8   fmt.Printf("%q\n", ls) // "hello world abc"
9   fmt.Printf("%q\n", ts) // "HELLO WORLD ABC"
10}
11
12

// 获取非 ASCII 字符的 Title 格式列表


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1func main() {
2   for _, cr := range unicode.CaseRanges {
3       // u := uint32(cr.Delta[unicode.UpperCase]) // 大写格式
4       // l := uint32(cr.Delta[unicode.LowerCase]) // 小写格式
5       t := uint32(cr.Delta[unicode.TitleCase]) // Title 格式
6       // if t != 0 && t != u {
7       if t != 0 {
8           for i := cr.Lo; i <= cr.Hi; i++ {
9               fmt.Printf("%c -> %c\n", i, i+t)
10          }
11      }
12  }
13}
14
15

// ToUpperSpecial 将 s 中的所有字符修改为其大写格式。
// 优先使用 _case 中的规则进行转换
func ToUpperSpecial(_case unicode.SpecialCase, s string) string

// ToLowerSpecial 将 s 中的所有字符修改为其小写格式。
// 优先使用 _case 中的规则进行转换
func ToLowerSpecial(_case unicode.SpecialCase, s string) string

// ToTitleSpecial 将 s 中的所有字符修改为其 Title 格式。
// 优先使用 _case 中的规则进行转换
func ToTitleSpecial(_case unicode.SpecialCase, s string) string

_case 规则说明,以下列语句为例:
unicode.CaseRange{‘A’, ‘Z’, [unicode.MaxCase]rune{3, -3, 0}}
·其中 ‘A’, ‘Z’ 表示此规则只影响 ‘A’ 到 ‘Z’ 之间的字符。
·其中 [unicode.MaxCase]rune 数组表示:
当使用 ToUpperSpecial 转换时,将字符的 Unicode 编码与第一个元素值(3)相加
当使用 ToLowerSpecial 转换时,将字符的 Unicode 编码与第二个元素值(-3)相加
当使用 ToTitleSpecial 转换时,将字符的 Unicode 编码与第三个元素值(0)相加


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1func main() {
2   // 定义转换规则
3   var _MyCase = unicode.SpecialCase{
4       // 将半角逗号替换为全角逗号,ToTitle 不处理
5       unicode.CaseRange{',', ',',
6           [unicode.MaxCase]rune{',' - ',', ',' - ',', 0}},
7       // 将半角句号替换为全角句号,ToTitle 不处理
8       unicode.CaseRange{'.', '.',
9           [unicode.MaxCase]rune{'。' - '.', '。' - '.', 0}},
10      // 将 ABC 分别替换为全角的 ABC、abc,ToTitle 不处理
11      unicode.CaseRange{'A', 'C',
12          [unicode.MaxCase]rune{'A' - 'A', 'a' - 'A', 0}},
13  }
14  s := "ABCDEF,abcdef."
15  us := strings.ToUpperSpecial(_MyCase, s)
16  fmt.Printf("%q\n", us) // "ABCDEF,ABCDEF。"
17  ls := strings.ToLowerSpecial(_MyCase, s)
18  fmt.Printf("%q\n", ls) // "abcdef,abcdef。"
19  ts := strings.ToTitleSpecial(_MyCase, s)
20  fmt.Printf("%q\n", ts) // "ABCDEF,ABCDEF."
21}
22
23

// Trim 将删除 s 首尾连续的包含在 cutset 中的字符


1
2
3
4
5
6
7
8
1func Trim(s string, cutset string) string
2func main() {
3   s := " Hello 世界! "
4   ts := strings.Trim(s, " Helo!")
5   fmt.Printf("%q\n", ts) // "世界"
6}
7
8

// TrimLeft 将删除 s 头部连续的包含在 cutset 中的字符


1
2
3
4
5
6
7
8
1func TrimLeft(s string, cutset string) string
2func main() {
3   s := " Hello 世界! "
4   ts := strings.TrimLeft(s, " Helo")
5   fmt.Printf("%q\n", ts) // "世界! "
6}
7
8

// TrimRight 将删除 s 尾部连续的包含在 cutset 中的字符


1
2
3
4
5
6
7
8
1func TrimRight(s string, cutset string) string
2func main() {
3   s := " Hello 世界! "
4   ts := strings.TrimRight(s, " 世界!")
5   fmt.Printf("%q\n", ts) // " Hello"
6}
7
8

// TrimSpace 将删除 s 首尾连续的的空白字符


1
2
3
4
5
6
7
8
1func TrimSpace(s string) string
2func main() {
3   s := " Hello 世界! "
4   ts := strings.TrimSpace(s)
5   fmt.Printf("%q\n", ts) // "Hello 世界!"
6}
7
8

// TrimPrefix 删除 s 头部的 prefix 字符串
// 如果 s 不是以 prefix 开头,则返回原始 s


1
2
3
4
5
6
7
8
1func TrimPrefix(s, prefix string) string
2func main() {
3   s := "Hello 世界!"
4   ts := strings.TrimPrefix(s, "Hello")
5   fmt.Printf("%q\n", ts) // " 世界"
6}
7
8

// TrimSuffix 删除 s 尾部的 suffix 字符串
// 如果 s 不是以 suffix 结尾,则返回原始 s


1
2
3
4
5
6
7
8
1func TrimSuffix(s, suffix string) string
2func main() {
3   s := "Hello 世界!!!!!"
4   ts := strings.TrimSuffix(s, "!!!!")
5   fmt.Printf("%q\n", ts) // " 世界"
6}
7
8

注:TrimSuffix只是去掉s字符串结尾的suffix字符串,只是去掉1次,而TrimRight是一直去掉s字符串右边的字符串,只要有响应的字符串就去掉,是一个多次的过程,这也是二者的本质区别.
14.
// Replace 返回 s 的副本,并将副本中的 old 字符串替换为 new 字符串
// 替换次数为 n 次,如果 n 为 -1,则全部替换
// 如果 old 为空,则在副本的每个字符之间都插入一个 new


1
2
3
4
5
6
7
8
9
10
1func Replace(s, old, new string, n int) string
2func main() {
3   s := "Hello 世界!"
4   s = strings.Replace(s, " ", ",", -1)
5   fmt.Println(s)
6   s = strings.Replace(s, "", "|", -1)
7   fmt.Println(s)
8}
9
10

给TA打赏
共{{data.count}}人
人已打赏
安全技术

C++异常

2022-1-11 12:36:11

安全运维

DevOps基础-3.1-DevOps组件:敏捷

2021-10-12 11:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索