Golang程序 获取字符串中子串的索引
在Go编程语言中,字符串是一种内置的数据类型,表示字符序列。它们使用双引号(”)定义,可以包含任何有效的Unicode字符。子串是一个字符串的一部分,它包含了原始字符串中的一个字符序列。在Go中可以通过对字符串值使用切片语法来获得子串。在这篇文章中,我们将学习不同的方法来获取字符串中子串的索引,使用golang编程。
方法1:使用For Loop
在这个方法中,我们创建的函数将以字符串和子串为参数,通过使用for循环来处理它们,并返回找到给定子串的位置的索引。
算法
- 第1步 – 首先,我们需要导入fmt包。
-
第2步 – 然后我们需要创建函数indexOfString()。这个函数将字符串和子串作为参数,并返回一个整数值。
-
第 3步 – 在这个函数中,我们使用for循环来迭代字符串,并使用if条件来检查子串的当前字符是否出现在字符串的任何位置。
-
第4步 – 如果子串是字符串的一部分,那么我们需要返回迭代变量的值。
-
第 5步 – 如果子串不是字符串的一部分,那么我们需要返回-1。现在开始执行main()函数。在程序的main()部分初始化两个变量,命名为string和substring类型的字符串,并在其中存储数值。
-
第6步 – 现在,调用IndexOfStrings()函数,将字符串和子字符串作为参数传递给该函数。将结果存储在一个叫做index的变量中。
-
第7步 – 如果index返回的值是-1,那么我们需要打印出子串不是字符串的一部分,否则就在屏幕上打印出子串与index值一起被找到。
例子
在这个例子中,我们将在一个外部函数中使用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'
方法2:使用Index()函数
在这个方法中,我们将使用golang的内部索引函数。在第一个例子中,我们使用 index() 函数,在第二个例子中我们使用 indexRune() 函数。两个语法都解释如下
语法
func Index(s, substr string) int
index()函数存在于strings包中,用于获取一个给定子串的第一次出现的索引。该函数需要两个参数。一个是字符串,另一个是要检测其出现的子串。然后该函数以整数格式返回该子串的第一次出现。
func IndexRune(s, substr string) int
indexRune()函数存在于strings包中,用于获取给定符文字符的首次出现的索引。该函数需要两个参数。一个是字符串,另一个是要检测其出现的符文。然后,该函数返回该符文首次出现的整数值。
算法
- 第1步 – 首先,我们需要导入fmt和strings包。
-
第2步 – 然后,我们需要启动main()函数。在main()函数中,初始化两个名为string和substr的变量并给它们赋值。
-
第3步 – 现在,调用index()函数,将字符串和子串作为参数传递给它,并将结果存储在一个叫做index的变量中。
-
第4步 – 如果index的值是-1,那么我们需要打印出子串不是字符串的一部分,否则就在屏幕上打印出子串和index的值一起被找到。
例子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!'
总结
我们已经成功地编译并执行了一个Golang程序,以获取字符串中子串的索引,并附有实例。