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