Go語言程式:檢查字串是否以指定子字串開頭
在Go程式語言中,字串是內建資料型別,表示字元序列。它們用雙引號(")定義,可以包含任何有效的Unicode字元。子字串是字串的一部分,包含來自原始字串的字元序列。在Go中,可以使用字串值的切片語法獲得子字串。在本文中,我們將編寫一個Go語言程式來檢查字串是否以指定的子字串開頭。在這裡,我們將使用for迴圈和Go程式語言中的內建函式來實現相應的結果。
方法一:使用使用者自定義函式
在這種方法中,我們將使用for迴圈迭代給定的字串,如果字串的當前字元與子字串匹配,那麼我們可以說子字串是字串的一部分。
演算法
步驟1 − 首先,我們需要匯入fmt包。
步驟2 − 然後,啟動main()函式。在main()函式內部,初始化兩個字串型別的變數併為其賦值。同時初始化一個int型別的變數,並將子字串變數的長度儲存到其中。
步驟3 − 接下來,在螢幕上列印這兩個字串。現在,啟動一個for迴圈來迭代給定的字串,並檢查當前字串的字元是否等於子字串。
步驟4 − 如果字串的當前字元與子字串匹配,那麼我們可以說子字串是字串的一部分。
步驟5 − 然後我們需要反轉布林變數,並打印出給定字串以子字串開頭,否則列印子字串不是字串的一部分。
示例
在這個例子中,我們將使用for迴圈來檢查字串是否以指定的子字串開頭。
package main
import "fmt"
func main() {
var s string = "Hello, world!"
var substring string = "Hello"
var n int = len(substring)
var match bool = true
fmt.Println("The given string is:\n", s)
fmt.Println()
fmt.Println("The substring to be checked is:\n", substring)
for i := 0; i < n; i++ {
if s[i] != substring[i] {
match = false
break
}
}
if match {
fmt.Println("The given string starts with the specified substring.")
} else {
fmt.Println("The given string does not start with the specified substring.")
}
}
輸出
The given string is: Hello, world! The substring to be checked is: Hello The given string starts with the specified substring.
方法二:使用內建函式
在這種方法中,我們將使用Golang的內建函式——HasPrefix()和Index()。這兩個函式的解釋如下:
語法
func HasPrefix(str, prefix string) bool
HasPrefix()函式位於strings包中,用於檢查子字串是否是給定字串的一部分。該函式接受兩個引數,一個是待檢查的字串,另一個是子字串,然後函式根據字串是否以特定子字串開頭返回一個布林變數。
func Index(s, substr string) int
Index()函式位於strings包中,用於獲取給定子字串的第一次出現的索引。該函式接受兩個值作為引數。一個是字串,另一個是需要檢測其出現的子字串。然後,該函式以整數格式返回該子字串的第一次出現。
演算法
步驟1 − 首先,我們需要匯入fmt和strings包。
步驟2 − 然後,啟動main()函式。在main()函式內部,初始化兩個字串變數,並將需要檢查的字串和子字串儲存到其中。
步驟3 − 接下來,在螢幕上列印字串。現在,呼叫HasPrefix()函式,並將需要檢查的字串和子字串傳遞進去。
步驟4 − 將函式返回的結果儲存在一個布林變數中,並使用if條件來檢查返回的值是true還是false。
步驟5 − 如果返回值為true,則列印字串以子字串開頭,否則列印子字串不是字串的一部分。
示例1
在這個例子中,我們將編寫一個Go語言程式,使用HasPrefix()函式來檢查字串是否以指定的子字串開頭。
package main
import (
"fmt"
"strings"
)
func main() {
var s string = "Hello, world!"
var substring string = "world!"
var match bool
fmt.Println("The given string is:\n", s)
fmt.Println()
fmt.Println("The substring to be checked is:\n", substring)
match = strings.HasPrefix(s, substring)
if match {
fmt.Println("The string starts with the specified substring.")
} else {
fmt.Println("The string does not start with the specified substring.")
}
}
輸出
The given string is: Hello, world! The substring to be checked is: world! The string does not start with the specified substring.
示例2
在這個例子中,我們將編寫一個Go語言程式,使用strings包中的index()函式來檢查字串是否以子字串開頭。
package main
import (
"fmt"
"strings"
)
func main() {
var s string = "Hello, world!"
var substring string = "Hello"
var match bool
fmt.Println("The given string is:\n", s)
fmt.Println()
fmt.Println("The substring to be checked is:\n", substring)
match = strings.Index(s, substring) == 0
if match {
fmt.Println("The string starts with the specified substring.")
} else {
fmt.Println("The string does not start with the specified substring.")
}
}
輸出
The given string is: Hello, world! The substring to be checked is: Hello The string starts with the specified substring.
結論
我們已經成功編譯並執行了一個Go語言程式,用於檢查字串是否以指定的子字串開頭,並附帶示例。我們在這裡使用了三種方法。在第一種方法中,我們使用for迴圈來實現邏輯,而在第二個和第三個例子中,我們分別使用了Go語言中strings包中的內建庫函式HasPrefix()和Index()。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP