介绍
Go的string
包有几个可用于处理字符串数据类型的函数。 这些函数让我们可以轻松地修改和操作字符串。 我们可以将函数视为我们对代码元素执行的操作。 内置函数是使用Go编程语言定义的函数,可供我们随时使用。
在本教程中,我们将回顾几个可用于在Go中处理字符串的不同函数。
制作字符串大写和小写
函数strings.ToUpper
和strings.ToLower
将返回一个字符串,其中原始字符串的所有字母都转换为大写或小写字母。 因为字符串是不可变数据类型,所以返回的字符串将是一个新字符串。 字符串中不是字母的任何字符都不会更改。
让我们将字符串"Sammy Shark"
转换为全部大写:
ss := "Sammy Shark"fmt.Println(strings.ToUpper(ss))
SAMMY SHARK
现在,让我们将字符串转换为全小写:
fmt.Println(strings.ToLower(ss))
sammy shark
由于您使用的是strings
包,因此首先需要将其导入到程序中。 要将字符串转换为大写和小写,整个程序将如下所示:
package mainimport ( "fmt" "strings")func main() { ss := "Sammy Shark" fmt.Println(strings.ToUpper(ss)) fmt.Println(strings.ToLower(ss))}
strings.ToUpper
和strings.ToLower
函数通过使整个案例保持一致来更容易地评估和比较字符串。 例如,如果用户将其名称全部写为小写,我们仍然可以通过对全大写版本进行检查来确定他们的名字是否在我们的数据库中。
字符串搜索功能
strings
包有许多函数,可帮助确定字符串是否包含特定的字符序列。
功能 | 使用 |
---|---|
strings.HasPrefix | 从头开始搜索字符串 |
strings.HasSuffix | 从最后搜索字符串 |
strings.Contains | 搜索字符串中的任何位置 |
strings.Count | 计算字符串出现的次数 |
strings.HasPrefix
和strings.HasSuffix
允许您检查strings.HasSuffix
是否以特定字符集开头或结尾。
让我们检查一下Sammy Shark
字符串是从Sammy Shark
开始还是以Shark
结尾。
ss := "Sammy Shark"fmt.Println(strings.HasPrefix(ss, "Sammy"))fmt.Println(strings.HasSuffix(ss, "Shark"))
truetrue
让我们检查字符串Sammy Shark
包含序列Sh
:
fmt.Println(strings.Contains(ss, "Sh"))
true
最后,让我们看看字母S
在短语Sammy Shark
出现的次数:
fmt.Println(strings.Count(ss, "S"))
2
注意: Go中的所有字符串都区分大小写。 这意味着Sammy
与sammy
。
使用小写s
从Sammy Shark
获取计数与使用大写S
:
fmt.Println(strings.Count(ss, "s"))
0
因为S
与s
不同,返回的计数将为0
。
当您想要比较或搜索程序中的字符串时,字符串函数非常有用。
确定字符串长度
内置函数len()
返回字符串中的字符数。 当您需要强制执行最小或最大密码长度,或者将较大的字符串截断到某些限制内以用作缩写时,此功能非常有用。
为了演示这个函数,我们将找到一个句子长字符串的长度:
openSource := "Sammy contributes to open source."fmt.Println(len(openSource))
33
我们将变量openSource
设置为字符串"Sammy contributes to open source."
然后使用len(openSource)
将该变量传递给len()
函数。 最后我们将函数传递给fmt.Println()
函数,以便我们可以在屏幕上看到程序的输出。
请记住, len()
函数将计算由双引号绑定的任何字符 – 包括字母,数字,空格字符和符号。
字符串操作的函数
strings.Join
, strings.Split
和strings.ReplaceAll
函数是在Go中操作字符串的一些额外方法。
strings.Join
函数可用于将一片字符串组合成一个新的单个字符串。
让我们从一个字符串片段创建一个逗号分隔的字符串:
fmt.Println(strings.Join([]string{"sharks", "crustaceans", "plankton"}, ","))
sharks,crustaceans,plankton
如果我们想在新字符串中的字符串值之间添加逗号和空格,我们可以简单地用逗号后面的空格重写表达式: strings.Join([]string{"sharks", "crustaceans", "plankton"}, ", ")
。
就像我们可以将字符串连接在一起一样,我们也可以分割字符串。 为此,我们使用strings.Split
函数并拆分空格:
balloon := "Sammy has a balloon."s := strings.Split(balloon, " ")fmt.Println(s)
[Sammy has a balloon]
输出是一串字符串。 由于使用了strings.Println
,因此很难通过查看输出来判断输出是什么。 要查看它确实是一个字符串片段,请使用带有%q
动词的fmt.Printf
函数来引用字符串:
fmt.Printf("%q", s)
["Sammy" "has" "a" "balloon."]
除了strings.Split
之外,另一个有用的函数是strings.Fields
。 不同之处在于strings.Fields
将忽略所有空格,并且只会拆分字符串中的实际fields
:
data := " username password email date"fields := strings.Fields(data)fmt.Printf("%q", fields)
["username" "password" "email" "date"]
strings.ReplaceAll
函数可以采用原始字符串并返回更新后的字符串。
让我们说sammy所拥有的气球已经丢失了。 由于Sammy不再有这个气球,我们会将原始字符串balloon
的子串"has"
更改为新的字符串中的"had"
:
fmt.Println(strings.ReplaceAll(balloon, "has", "had"))
在括号内,首先是balloon
存储原始字符串的变量; 第二个子字符串"has"
是我们想要替换的,第三个子字符串"had"
是我们用第二个子字符串替换的。 我们的输出将如下所示:
Sammy had a balloon.
使用字符串函数strings.Join
, strings.Split
和strings.ReplaceAll
将为您提供更好的控制来操作Go中的字符串。
结论
本教程介绍了一些字符串数据类型的常见字符串包函数,您可以使用这些函数来处理和操作Go程序中的字符串。
您可以在“ 了解数据类型”中了解有关其他数据类型的更多信息,并在“使用字符串简介”中阅读有关字符串的更多信