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]