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