Go基础学习记录之字符串处理(strings和strconv)

{app.params.name}}{app.params.name}}{app.params.name}}

在Web上,我们看到的几乎所有内容(包括用户输入,数据库访问等)都由字符串表示。它们是Web开发中非常重要的一部分。在许多情况下,我们还需要拆分,连接,转换和操作字符串。本篇文章我们一起学习下Go标准库中的字符串和strconv包。

字符串包介绍

以下函数来自strings包。有关详细信息,请参阅官方文档:

func Contains(s, substr string) bool  // 检查字符串s是否包含字符串substr,返回一个布尔值。

如下实例

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Println(strings.Contains("seafood", "foo"))
	fmt.Println(strings.Contains("seafood", "bar"))
	fmt.Println(strings.Contains("seafood", ""))
	fmt.Println(strings.Contains("", ""))
}

编译运行后得到Strings处理的结果如下

true
false
true
true

func Join(a []string, sep string) string // 将切片中的字符串与分隔符`sep`组合在一起

如下实例

package main

import (
	"fmt"
	"strings"
)

func main() {
	s := []string{"foo", "bar", "baz"}
	fmt.Println(strings.Join(s, ", "))
}

编译运行后得到Strings处理的结果如下

foo, bar, baz

func Index(s, sep string) int // 在字符串s中查找sep的索引,如果找不到则返回-1。

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Println(strings.Index("chicken", "ken"))
	fmt.Println(strings.Index("chicken", "dmr"))
}

编译运行后得到Strings处理的结果如下

4
-1

func Repeat(s string, count int) string // 重复字符串的计数次数。

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Println("ba" + strings.Repeat("na", 2))
}

编译运行后得到Strings处理的结果如下

banana

func Replace(s, old, new string, n int) string // 将字符串old替换为字符串s中的字符串new。n是替换数量。如果n小于0,则替换所有实例。

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2))
	fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1))
}

编译运行后得到Strings处理的结果如下

oinky oinky oink
moo moo moo

func Split(s, sep string) []string // 将带有分隔符的字符串s拆分为切片。

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Printf("%q\n", strings.Split("a,b,c", ","))
	fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a "))
	fmt.Printf("%q\n", strings.Split(" xyz ", ""))
	fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins"))
}

编译运行后得到Strings处理的结果如下

["a" "b" "c"]
["" "man " "plan " "canal panama"]
[" " "x" "y" "z" " "]
[""]

func Trim(s string, cutset string) string // 如果字符串s最左边或最右边,删除字符串s的剪切集。

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Printf("[%q]", strings.Trim(" !!! Achtung !!! ", "! "))

}

编译运行后得到Strings处理的结果如下

["Achtung"]

func Fields(s string) []string //删除空格项并将带有空格的字符串拆分为切片。

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Printf("Fields are: %q", strings.Fields("  foo bar  baz   "))

}

编译运行后得到Strings处理的结果如下

Fields are: ["foo" "bar" "baz"]

strconv包的介绍

以下函数来自strconv包。像往常一样,请参阅官方文档了解更多详情:

追加系列,将数据转换为字符串,并附加到当前字节切片

实例演示如下

package main

import (
	"fmt"
	"strconv"
)

func main() {
	str := make([]byte, 0, 100)
	str = strconv.AppendInt(str, 4567, 10)
	str = strconv.AppendBool(str, false)
	str = strconv.AppendQuote(str, "abcdefg")
	str = strconv.AppendQuoteRune(str, '单')
	fmt.Println(string(str))

}

编译运行后得到strconv处理的结果如下

4567false"abcdefg"'单'

格式化系列,将其他数据类型转换为字符串。

实例演示如下

package main

import (
	"fmt"
	"strconv"
)

func main() {
	a := strconv.FormatBool(false)
	b := strconv.FormatFloat(123.23, 'g', 12, 64)
	c := strconv.FormatInt(1234, 10)
	d := strconv.FormatUint(12345, 10)
	e := strconv.Itoa(1023)
	fmt.Println(a, b, c, d, e)

}

编译运行后得到strconv处理的结果如下

false 123.23 1234 12345 1023

解析系列,将字符串转换为其他类型。

实例演示如下

package main

import (
	"fmt"
	"strconv"
)

func main() {
	a, err := strconv.ParseBool("false")
	if err != nil {
		fmt.Println(err)
	}
	
	b, err := strconv.ParseFloat("123.23", 64)
	if err != nil {
		fmt.Println(err)
	}
	
	c, err := strconv.ParseInt("1234", 10, 64)
	if err != nil {
		fmt.Println(err)
	}
	
	d, err := strconv.ParseUint("12345", 10, 64)
	if err != nil {
		fmt.Println(err)
	}

	e := strconv.Itoa(1023)
	fmt.Println(a, b, c, d, e)
}

编译运行后得到strconv处理的结果如下

false 123.23 1234 12345 1023

今天的学习就到这里,明天继续。

版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/93


版权声明

durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。

本文首发于 小绒毛的足迹博客( https://www.xiaorongmao.com ),版权所有,侵权必究。

本文永久链接: https://www.xiaorongmao.com/blog/93