Go语言教程之边写边学:基础练习:常用字符串函数(3)
Golang提供了许多内置的字符串函数,它们有助于在处理字符串数据时执行多项操作。Golang字符串函数是核心的一部分。使用此功能无需安装,只需导入"strings"包即可。重要的Golang字符串函数列表如下:
Join函数:
Join() 函数从切片的元素返回一个字符串。Join将字符串Slice的元素连接起来以创建单个字符串。分隔符字符串sep指定在生成的字符串中的切片元素之间放置的内容。
func Join(stringSlice []string, sep string) string
示例代码:
package main
import (
"fmt"
"strings"
)
func main() {
// Slice of strings
textString := []string{"Australia", "Japan", "Canada"}
fmt.Println(strings.Join(textString, "-"))
// Slice of strings
textNum := []string{"1", "2", "3", "4", "5"}
fmt.Println(strings.Join(textNum,""))
}
输出:
Australia-Japan-Canada
12345
LastIndex函数:区分大小写
LastIndex函数允许在字符串中搜索特定的特定文本/字符/字符串。它返回字符串中最后一个实例text/character/strin的索引。如果找到,则返回从0开始的特定位置。如果未找到,则返回 -1。
func LastIndex(s, sep string) int
示例代码:
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.LastIndex("japanese", "a")) // position j=0,a=1,p=2,a=3
fmt.Println(strings.LastIndex("japanese", "A"))
fmt.Println(strings.LastIndex("Australia Australian", "lia"))
fmt.Println(strings.LastIndex("AUSTRALIA AUSTRALIAN", "lia"))
fmt.Println(strings.LastIndex("1234567890 1234567890", "0"))
fmt.Println(strings.LastIndex("1234567890 1234567890", "00"))
fmt.Println(strings.LastIndex("1234567890 1234567890", "123"))
}
输出:
3
-1
16
-1
20
-1
11
Repeat函数:
Repeat函数将字符串重复指定次数,并返回一个由字符串s的计数副本组成的新字符串。Count指定字符串将重复的次数。必须大于或等于0。
func Repeat(s string, count int) string
示例代码:
package main
import (
"fmt"
"strings"
)
func main() {
textString := "Japan"
repString := strings.Repeat(textString, 5)
fmt.Println(repString)
textString = " A " // char with space on both side
repString = strings.Repeat(textString,5)
fmt.Println(repString) // Repeat space also
fmt.Println("ba" + strings.Repeat("na", 2))
fmt.Println("111" + strings.Repeat("22", 2))
fmt.Println("111" + strings.Repeat(" ",2))
}
输出:
JapanJapanJapanJapanJapan
A A A A A
banana
1112222
111
Replace函数:区分大小写
Replace函数将字符串中的某些字符替换为其他一些字符。n指定要在字符串中替换的字符数。如果n小于0,则对替换次数没有限制。
func Replace(s, old, new string, n int) string
示例代码:
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.Replace("Australia Japan Canada Indiana", "an", "anese", 0))
fmt.Println(strings.Replace("Australia Japan Canada Indiana", "an", "anese", 1))
fmt.Println(strings.Replace("Australia Japan Canada Indiana", "an", "anese", 2))
fmt.Println(strings.Replace("Australia Japan Canada Indiana", "an", "anese", -1))
fmt.Println(strings.Replace("1234534232132", "1", "0", -1))
// case-sensitive
fmt.Println(strings.Replace("Australia Japan Canada Indiana", "AN", "anese", -1))
}
输出:
Australia Japan Canada Indiana
Australia Japanese Canada Indiana
Australia Japanese Caneseada Indiana
Australia Japanese Caneseada Indianesea
0234534232032
Australia Japan Canada Indiana
Split函数:区分大小写
Split函数将字符串分解为切片。将String拆分为由sep分隔的所有子字符串,并返回这些分隔符之间的子字符串切片。
func Split(S string, sep string) []string
示例代码:
package main
import (
"fmt"
"strings"
)
func main() {
strSlice := strings.Split("a,b,c", ",")
fmt.Println(strSlice,"\n")
strSlice = strings.Split("Australia is a country and continent surrounded by the Indian and Pacific oceans.", " ")
for _, v := range strSlice {
fmt.Println(v)
}
strSlice = strings.Split("abacadaeaf","a")
fmt.Println("\n",strSlice)
strSlice = strings.Split("abacadaeaf","A")
fmt.Println("\n",strSlice)
strSlice = strings.Split("123023403450456056706780789","0")
fmt.Println("\n",strSlice)
strSlice = strings.Split("123023403450456056706780789",",")
fmt.Println("\n",strSlice)
}
输出:
[a b c]
Australia
is
a
country
and
continent
surrounded
by
the
Indian
and
Pacific
oceans.
[ b c d e f]
[abacadaeaf]
[123 234 345 456 567 678 789]
[123023403450456056706780789]
SplitN函数:区分大小写
SplitN函数将字符串分解为切片。SplitN将String拆分为由sep分隔的所有子字符串,并在这些分隔符之间返回子字符串的切片。n确定要返回的子字符串数。
n小于0:最多n个子字符串;最后一个子字符串将是未拆分的余数。
n等于0:结果为nil(零个子字符串)
n大于0:所有子字符串
func SplitN(s, sep string, n int) []string
示例代码:
package main
import (
"fmt"
"strings"
)
func main() {
strSlice := strings.SplitN("a,b,c", ",",0)
fmt.Println(strSlice,"\n")
strSlice = strings.SplitN("a,b,c", ",",1)
fmt.Println(strSlice,"\n")
strSlice = strings.SplitN("a,b,c", ",",2)
fmt.Println(strSlice,"\n")
strSlice = strings.SplitN("a,b,c", ",",3)
fmt.Println(strSlice,"\n")
strSlice = strings.SplitN("Australia is a country and continent surrounded by the Indian and Pacific oceans.", " ",-1)
for _, v := range strSlice {
fmt.Println(v)
}
strSlice = strings.SplitN("123023403450456056706780789","0",5)
fmt.Println("\n",strSlice)
}
输出:
[]
[a,b,c]
[a b,c]
[a b c]
Australia
is
a
country
and
continent
surrounded
by
the
Indian
and
Pacific
oceans.
[123 234 345 456 56706780789]
SplitAfter函数:区分大小写
SplitAfter函数将字符串分解为切片。SplitAfter按sep分割后,在分割的字符串中保留sep。如ab1cd1,用1分割后结果是[ab1, cd1]。
func SplitAfter(S String, sep string) []string
示例代码:
package main
import (
"fmt"
"strings"
)
func main() {
strSlice := strings.SplitAfter("a,b,c", ",")
fmt.Println(strSlice,"\n")
strSlice = strings.SplitAfter("Australia is a country and continent surrounded by the Indian and Pacific oceans.", " ")
for _, v := range strSlice {
fmt.Println(v)
}
strSlice = strings.SplitAfter("abacadaeaf","a")
fmt.Println("\n",strSlice)
strSlice = strings.SplitAfter("abacadaeaf","A")
fmt.Println("\n",strSlice)
strSlice = strings.SplitAfter("123023403450456056706780789","0")
fmt.Println("\n",strSlice)
strSlice = strings.SplitAfter("123023403450456056706780789",",")
fmt.Println("\n",strSlice)
}
输出:
[a, b, c]
Australia
is
a
country
and
continent
surrounded
by
the
Indian
and
Pacific
oceans.
[a ba ca da ea f]
[abacadaeaf]
[1230 2340 3450 4560 5670 6780 789]
[123023403450456056706780789]
SplitAfterN函数:区分大小写
SplitAfterN函数将字符串分解为切片。SplitAfterN在每个sep实例之后将String s切成子字符串,并返回这些子字符串的切片。n确定要返回的子字符串数。
n小于0:最多n个子字符串;最后一个子字符串将是未拆分的余数。
n等于0:结果为nil(零个子字符串)
n大于0:所有子字符串
func SplitAfterN(string s, sep string, n int) []string
示例代码:
package main
import (
"fmt"
"strings"
)
func main() {
strSlice := strings.SplitAfterN("a,b,c", ",",0)
fmt.Println(strSlice,"\n")
strSlice = strings.SplitAfterN("a,b,c", ",",1)
fmt.Println(strSlice,"\n")
strSlice = strings.SplitAfterN("a,b,c", ",",2)
fmt.Println(strSlice,"\n")
strSlice = strings.SplitAfterN("a,b,c", ",",3)
fmt.Println(strSlice,"\n")
strSlice = strings.SplitAfterN("Australia is a country and continent surrounded by the Indian and Pacific oceans.", " ",-1)
for _, v := range strSlice {
fmt.Println(v)
}
strSlice = strings.SplitAfterN("123023403450456056706780789","0",5)
fmt.Println("\n",strSlice)
}
输出:
[]
[a,b,c]
[a, b,c]
[a, b, c]
Australia
is
a
country
and
continent
surrounded
by
the
Indian
and
Pacific
oceans.
[1230 2340 3450 4560 56706780789]