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()。

更新於:2023年2月17日

瀏覽量:580

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.