Go语言程序:获取字符串中子串的索引
在Go编程语言中,字符串是一种内置数据类型,表示字符序列。它们使用双引号(")定义,可以包含任何有效的Unicode字符。子串是字符串的一部分,包含来自原始字符串的字符序列。在Go中,可以使用字符串值的切片语法获取子串。本文将学习使用Go语言获取字符串中子串索引的不同方法。
方法一:使用for循环
在这种方法中,我们创建的函数将字符串和子串作为参数,并使用for循环处理它们以返回找到给定子串的位置索引。
算法
步骤1 − 首先,我们需要导入fmt包。
步骤2 − 然后我们需要创建函数indexOfString()。此函数将字符串和子串作为参数,并返回一个整数值。
步骤3 − 在此函数中,我们使用for循环迭代字符串,并使用if条件检查子串的当前字符是否存在于字符串的任何位置。
步骤4 − 如果子串是字符串的一部分,则需要返回迭代变量的值。
步骤5 − 如果子串不是字符串的一部分,则需要返回-1。现在开始main()函数。在程序的main()部分,初始化两个名为string和substring的字符串类型变量,并在其中存储值。
步骤6 − 现在,通过将字符串和子串作为参数传递给函数,调用IndexOfStrings()函数。将结果存储在一个名为index的变量中。
步骤7 − 如果index返回的值为-1,则需要打印子串不是字符串的一部分,否则打印子串已找到以及屏幕上的索引值。
示例
在这个例子中,我们将使用for循环,在一个外部函数中使用for循环来获取字符串中子串的索引。
package main
import "fmt"
func IndexOfSubstring(str, subStr string) int {
for i := 0; i < len(str); i++ {
if str[i:i+len(subStr)] == subStr {
return i
}
}
return -1
}
func main() {
var str string = "Its a beautiful day"
var subStr string = "day"
var index int = IndexOfSubstring(str, subStr)
if index != -1 {
fmt.Printf("The substring '%s' is found at index %d in the string '%s'\n", subStr, index, str)
} else {
fmt.Printf("The substring '%s' is not found in the string '%s'\n", subStr, str)
}
}
输出
The substring 'day' is found at index 16 in the string 'Its a beautiful day'
方法二:使用Index()函数
在这种方法中,我们将使用Go语言中的内置Index函数。在第一个示例中,我们使用的是index()函数,在第二个示例中,我们使用的是indexRune()函数。下面解释了两种语法:
语法
func Index(s, substr string) int
index()函数位于strings包中,用于获取给定子串的第一次出现的索引。该函数将两个值作为参数。一个是字符串,另一个是要检测其出现的子串。然后,该函数以整数格式返回该子串的第一次出现。
func IndexRune(s, substr string) int
indexRune()函数位于strings包中,用于获取给定rune字符的第一次出现的索引。该函数将两个值作为参数。一个是字符串,另一个是要检测其出现的rune。然后,该函数返回该rune第一次出现的整数值。
算法
步骤1 − 首先,我们需要导入fmt和strings包。
步骤2 − 然后,我们需要启动main()函数。在main()中初始化两个名为string和substr的变量,并为它们赋值。
步骤3 − 现在,通过将字符串和子串作为参数传递给它,调用Index()函数,并将结果存储在一个名为index的变量中。
步骤4 − 如果index的值为-1,则需要打印子串不是字符串的一部分,否则打印子串已找到以及屏幕上的索引值。
示例1
在这个例子中,我们将使用Index()函数来获取字符串中存在的子串的索引。
package main
import (
"fmt"
"strings"
)
func main() {
var str string = "Your smile is a precious gem keep smiling!"
var subStr string = "gem"
index := strings.Index(str, subStr)
if index != -1 {
fmt.Printf("The substring '%s' is found at index %d in the string '%s'\n", subStr, index, str)
} else {
fmt.Printf("The substring '%s' is not found in the string '%s'\n", subStr, str)
}
}
输出
The substring 'gem' is found at index 25 in the string 'Your smile is a precious gem keep smiling!'
示例2
在这个例子中,我们将使用strings包中提供的IndexRune()函数来获取字符串中子串的索引。
package main
import (
"fmt"
"strings"
)
func main() {
var str string = "Your smile is a precious gem keep smiling!"
var subStr rune = 'p'
var index int = strings.IndexRune(str, subStr)
if index != -1 {
fmt.Printf("The substring '%c' is found at index %d in the string '%s'\n", subStr, index, str)
} else {
fmt.Printf("The substring '%c' is not found in the string '%s'\n", subStr, str)
}
}
输出
The substring 'p' is found at index 16 in the string 'Your smile is a precious gem keep smiling!'
结论
我们已经成功编译并执行了一个Go语言程序,用于获取字符串中子串的索引以及示例。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP