Go語言程式:將字串分割成 N 等份
在 Go 程式語言中,字串是內建的資料型別,表示字元序列。它們用雙引號 (") 定義,可以包含任何有效的 Unicode 字元。當一個字串被分成 n 等份時,會建立 n 個長度相等的子字串。可以使用程式語言中的字串分割或字串切片技術來獲取子字串。讓我們來看一些例子來理解這個邏輯。
方法一:使用 for 迴圈和內建 append 函式
在這個方法中,定義了一個名為 divideString 的函式,它接受兩個輸入,一個字串和一個整數,並輸出一個字串切片,該切片對應於原始字串的各個部分。為了確定每個部分的大小,該函式將字串長度除以整數。然後使用 for 迴圈遍歷字串並提取各個部分。主函式使用示例字串和整數執行 divideString 函式,並列印生成的各個部分。
語法
func append(slice, element_1, element_2…, element_N) []T
append 函式用於向陣列切片新增值。它接受多個引數。第一個引數是要向其新增值的陣列,後跟要新增的值。然後,該函式返回包含所有值的最終陣列切片。
演算法
步驟 1 − 建立一個 main 包,並在程式中宣告 fmt(格式化包),其中 main 生成可執行示例,fmt 幫助格式化輸入和輸出。
步驟 2 − 定義一個名為 divideString 的函式,它接受兩個引數:一個字串 mystr 和一個整數 size。
步驟 3 − 建立一個型別為 []string 的變數 parts 來儲存字串的分割部分。
步驟 4 − 使用整數除法 len(str) / size 計算每個部分的大小。
步驟 5 − 使用 for 迴圈迭代字串並提取各個部分。
步驟 6 − 在每次迭代中,計算當前部分的起始和結束索引。起始索引是 i * partSize,其中 i 是當前迭代次數。
步驟 7 − 結束索引是 start + partSize,但最後一輪迭代中設定為 len(str)。
步驟 8 − 將當前部分 (str[start:end]) 附加到 parts 變數。for 迴圈結束後,返回 parts 變數。
步驟 9 − 在 main 函式中,呼叫 divideString 函式,傳入示例字串和整數。
步驟 10 − 使用 fmt.Println(parts) 列印結果部分,其中 ln 表示換行。
步驟 11 − 此演算法透過使用整數除法並將 for 迴圈用於提取字串部分(使用計算出的每個部分的起始和結束索引)來將字串分成 n 等份。
示例
在下面的示例中,我們將使用 for 迴圈和內建 append 函式在 golang 中將字串分成 N 等份。
package main
import (
"fmt"
)
func divideString(mystr string, size int) []string {
var parts []string
partSize := len(mystr) / size
for i := 0; i < size; i++ {
start := i * partSize
end := start + partSize
if i == size-1 {
end = len(mystr)
}
parts = append(parts, mystr[start:end])
}
return parts
}
func main() {
mystr := "Hello,alexa!" //create a string
fmt.Println("The string given here is:")
n_parts := divideString(mystr, 3)
fmt.Println("The string after is converted to n equal parts:")
fmt.Println(n_parts) //print the string divided into n equal parts
}
輸出
The string given here is: The string after is converted to n equal parts: [Hell o,al exa!]
方法二:使用 len 方法
在這個方法中,我們將學習如何將字串分成 N 等份。此程式使用 for 迴圈在計算每個部分的大小(使用 math 包的 ceil 函式)後將字串分成 n 部分。最終輸出使用 fmt 包顯示。
語法
math.Ceil()
可以使用向上取整方法將浮點數四捨五入到最接近的整數。
演算法
步驟 1 − 建立一個 main 包,並在程式中宣告 fmt(格式化包),其中 main 生成可執行示例,fmt 幫助格式化輸入和輸出。
步驟 2 − 建立一個 main 函式,並在該函式中將字串和字串的第 n 部分作為 size 輸入。
步驟 3 − 透過將輸入字串的長度除以 size 並四捨五入到最接近的整數(使用算術),使用 Ceil() 方法確定每個部分的大小。
步驟 4 − 從頭建立一個切片陣列來儲存輸入字串的部分。
步驟 5 − 從索引 0 開始,使用 for 迴圈迭代輸入字串。
步驟 6 − 透過將當前迴圈索引乘以部分大小來計算每個迴圈迭代的當前部分的起始和結束索引,如果超出輸入字串長度則更改結束索引。
步驟 7 − 使用起始和結束索引切片輸入字串,然後將生成的子字串新增到 parts 陣列中。
步驟 8 − 使用另一個迴圈在第一個迴圈完成後輸出輸入字串的每個部分及其索引。
步驟 9 − 總體而言,該程式使用了 Golang 中的 math 和 fmt 包,使用 ceil 函式確定將字串分成 n 部分所需的分割數,並使用 for 迴圈重複遍歷文字。最終輸出使用 fmt 包顯示。
示例
在下面的示例中,我們將使用 len 方法在 golang 中將字串分成 N 等份。
package main
import (
"fmt"
"math"
)
func main() {
input_string := "Hello, alexa!" //create a string
fmt.Println("The input string given here is:", input_string)
size := 3
fmt.Println("The string after getting divided into n equal parts is:")
partSize := int(math.Ceil(float64(len(input_string)) / float64(size)))
parts := make([][]rune, size)
for i := 0; i < size; i++ { //run a loop get the string in n equal parts
start := i * partSize
end := start + partSize
if end > len(input_string) {
end = len(input_string)
}
parts[i] = []rune(input_string)[start:end]
}
for i, part := range parts {
fmt.Printf("Part %d: %s\n", i+1, string(part))
}
}
輸出
The input string given here is: Hello, alexa! The string after getting divided into n equal parts is: Part 1: Hello Part 2: , ale Part 3: xa!
結論
我們使用兩個例子執行了將字串分成 n 等份的程式。在第一個示例中,我們使用了迴圈和內建 append 函式,在第二個示例中,我們使用了 len 方法。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP