@@ -42,7 +42,7 @@ fmt.Println(strings.Compare(a, a))
42
42
fmt.Println(strings.Compare(b, a))
43
43
44
44
fmt.Println(strings.EqualFold("GO", "go"))
45
- fmt.Println(strings.EqualFold("壹","一"))
45
+ fmt.Println(strings.EqualFold("壹", "一"))
46
46
```
47
47
48
48
输出结果:
@@ -299,7 +299,7 @@ func LastIndexFunc(s string, f func(rune) bool) int
299
299
300
300
```go
301
301
han := func(c rune) bool {
302
- return unicode.Is (unicode.Han , c) // 汉字
302
+ return unicode.Is (unicode.Han , c) // 汉字
303
303
}
304
304
fmt.Println (strings.IndexFunc (" Hello, world" , han))
305
305
fmt.Println (strings.IndexFunc (" Hello, 世界" , han))
@@ -401,15 +401,15 @@ Map 函数,将 s 的每一个字符按照 mapping 的规则做映射替换,
401
401
示例:
402
402
```go
403
403
mapping := func(r rune) rune {
404
- switch {
405
- case r >= ' A' && r <= ' Z' : // 大写字母转小写
406
- return r+ 32
407
- case r >= ' a' && r <= ' z' : // 小写字母不处理
408
- return r
409
- case unicode.Is (unicode.Han ,r): // 汉字换行
410
- return ' \n '
411
- }
412
- return -1 // 过滤所有非字母、汉字的字符
404
+ switch {
405
+ case r >= ' A' && r <= ' Z' : // 大写字母转小写
406
+ return r + 32
407
+ case r >= ' a' && r <= ' z' : // 小写字母不处理
408
+ return r
409
+ case unicode.Is (unicode.Han , r): // 汉字换行
410
+ return ' \n '
411
+ }
412
+ return -1 // 过滤所有非字母、汉字的字符
413
413
}
414
414
fmt.Println (strings.Map (mapping, " Hello你#¥% ……\n ('World\n ,好Hello^(&(*界gopher..." ))
415
415
```
@@ -466,14 +466,14 @@ func ToUpperSpecial(c unicode.SpecialCase, s string) string
466
466
```go
467
467
fmt.Println(strings.ToLower("HELLO WORLD"))
468
468
fmt.Println(strings.ToLower("Ā Á Ǎ À"))
469
- fmt.Println(strings.ToLowerSpecial(unicode.TurkishCase,"壹"))
469
+ fmt.Println(strings.ToLowerSpecial(unicode.TurkishCase, "壹"))
470
470
fmt.Println(strings.ToLowerSpecial(unicode.TurkishCase, "HELLO WORLD"))
471
471
fmt.Println(strings.ToLower("Önnek İş"))
472
472
fmt.Println(strings.ToLowerSpecial(unicode.TurkishCase, "Önnek İş"))
473
473
474
474
fmt.Println(strings.ToUpper("hello world"))
475
475
fmt.Println(strings.ToUpper("ā á ǎ à"))
476
- fmt.Println(strings.ToUpperSpecial(unicode.TurkishCase,"一"))
476
+ fmt.Println(strings.ToUpperSpecial(unicode.TurkishCase, "一"))
477
477
fmt.Println(strings.ToUpperSpecial(unicode.TurkishCase, "hello world"))
478
478
fmt.Println(strings.ToUpper("örnek iş"))
479
479
fmt.Println(strings.ToUpperSpecial(unicode.TurkishCase, "örnek iş"))
@@ -534,44 +534,44 @@ DÜNYANIN İLK BORSA YAPISI AİZONAİ KABUL EDİLİR
534
534
## 2.1.11 修剪 ##
535
535
536
536
```go
537
- // Trim 函数, 将 s 左侧和右侧中匹配 cutset 中的任一字符的字符去掉
537
+ // 将 s 左侧和右侧中匹配 cutset 中的任一字符的字符去掉
538
538
func Trim(s string, cutset string) string
539
- // TrimLeft 函数, 将 s 左侧的匹配 cutset 中的任一字符的字符去掉
539
+ // 将 s 左侧的匹配 cutset 中的任一字符的字符去掉
540
540
func TrimLeft(s string, cutset string) string
541
- // TrimRight 函数, 将 s 右侧的匹配 cutset 中的任一字符的字符去掉
541
+ // 将 s 右侧的匹配 cutset 中的任一字符的字符去掉
542
542
func TrimRight(s string, cutset string) string
543
- // TrimPrefix 函数, 如果 s 的前缀为 prefix 则返回去掉前缀后的 string , 否则 s 没有变化。
543
+ // 如果 s 的前缀为 prefix 则返回去掉前缀后的 string , 否则 s 没有变化。
544
544
func TrimPrefix(s, prefix string) string
545
- // TrimSuffix 函数, 如果 s 的后缀为 suffix 则返回去掉后缀后的 string , 否则 s 没有变化。
545
+ // 如果 s 的后缀为 suffix 则返回去掉后缀后的 string , 否则 s 没有变化。
546
546
func TrimSuffix(s, suffix string) string
547
- // TrimSpace 函数, 将 s 左侧和右侧的间隔符去掉。常见间隔符包括:'\t', '\n', '\v', '\f', '\r', ' ', U+0085 (NEL)
547
+ // 将 s 左侧和右侧的间隔符去掉。常见间隔符包括:'\t', '\n', '\v', '\f', '\r', ' ', U+0085 (NEL)
548
548
func TrimSpace(s string) string
549
- // TrimFunc 函数, 将 s 左侧和右侧的匹配 f 的字符去掉
549
+ // 将 s 左侧和右侧的匹配 f 的字符去掉
550
550
func TrimFunc(s string, f func(rune) bool) string
551
- // TrimLeftFunc 函数, 将 s 左侧的匹配 f 的字符去掉
551
+ // 将 s 左侧的匹配 f 的字符去掉
552
552
func TrimLeftFunc(s string, f func(rune) bool) string
553
- // TrimRightFunc 函数, 将 s 右侧的匹配 f 的字符去掉
553
+ // 将 s 右侧的匹配 f 的字符去掉
554
554
func TrimRightFunc(s string, f func(rune) bool) string
555
555
```
556
556
557
557
包含了 9 个相关函数用于修剪字符串。
558
558
559
559
举个例子:
560
560
```go
561
- x:= "!!!@@@你好,!@#$ Gophers###$$$"
561
+ x := "!!!@@@你好,!@#$ Gophers###$$$"
562
562
fmt.Println(strings.Trim(x, "@#$!%^&*()_+=-"))
563
563
fmt.Println(strings.TrimLeft(x, "@#$!%^&*()_+=-"))
564
564
fmt.Println(strings.TrimRight(x, "@#$!%^&*()_+=-"))
565
565
fmt.Println(strings.TrimSpace(" \t\n Hello, Gophers \n\t\r\n"))
566
566
fmt.Println(strings.TrimPrefix(x, "!"))
567
567
fmt.Println(strings.TrimSuffix(x, "$"))
568
568
569
- f:= func(r rune) bool {
570
- return !unicode.Is (unicode.Han ,r) // 非汉字返回 true
569
+ f := func(r rune) bool {
570
+ return !unicode.Is (unicode.Han , r) // 非汉字返回 true
571
571
}
572
- fmt.Println (strings.TrimFunc (x, f ))
573
- fmt.Println (strings.TrimLeftFunc (x, f ))
574
- fmt.Println (strings.TrimRightFunc (x, f ))
572
+ fmt.Println (strings.TrimFunc (x, f))
573
+ fmt.Println (strings.TrimLeftFunc (x, f))
574
+ fmt.Println (strings.TrimRightFunc (x, f))
575
575
```
576
576
577
577
输出结果:
@@ -632,8 +632,8 @@ func NewReader(s string) *Reader
632
632
633
633
```go
634
634
type Builder struct {
635
- addr *Builder // of receiver, to detect copies by value
636
- buf []byte
635
+ addr *Builder // of receiver, to detect copies by value
636
+ buf []byte
637
637
}
638
638
```
639
639
该类型实现了 io 包下的 Writer, ByteWriter, StringWriter 等接口,可以向该对象内写入数据,Builder 没有实现 Reader 等接口,所以该类型不可读,但提供了 String 方法可以获取对象内的数据。
@@ -647,7 +647,6 @@ func (b *Builder) WriteRune(r rune) (int, error)
647
647
func (b *Builder) Write(p []byte) (int, error)
648
648
// WriteRune 方法向 b 写入字符串 s
649
649
func (b *Builder) WriteString(s string) (int, error)
650
-
651
650
// Len 方法返回 b 的数据长度。
652
651
func (b *Builder) Len() int
653
652
// Cap 方法返回 b 的 cap。
@@ -667,13 +666,13 @@ String 方法可以方便的获取 Builder 的内容。
667
666
668
667
举个例子:
669
668
```go
670
- b:= strings.Builder{}
671
- _= b.WriteByte (' 7' )
672
- n,_ := b.WriteRune (' 夕' )
669
+ b := strings.Builder{}
670
+ _ = b.WriteByte (' 7' )
671
+ n , _ := b.WriteRune (' 夕' )
673
672
fmt.Println (n)
674
- n,_= b.Write ([]byte (" Hello, World" ))
673
+ n, _ = b.Write ([]byte (" Hello, World" ))
675
674
fmt.Println (n)
676
- n,_= b.WriteString (" 你好,世界" )
675
+ n, _ = b.WriteString (" 你好,世界" )
677
676
fmt.Println (n)
678
677
fmt.Println (b.Len ())
679
678
fmt.Println (b.Cap ())
0 commit comments