Golang程序 将一个字符串分成’N’等份
在Go编程语言中,字符串是一种内置的数据类型,表示字符序列。它们使用双引号(”)定义,可以包含任何有效的UniExample字符。当一个字符串被分割成n个相等的部分时,会产生n个长度相等的子字符串。使用编程语言中的字符串拆分或字符串切片技术,可以获得子串。让我们看看这些例子来理解其中的逻辑。
方法1:使用for循环和内置的append函数
在这个方法中,定义了一个名为divideString的函数,接受两个输入,一个字符串和一个整数,并输出一个对应于原始字符串的各个组成部分的字符串切片。为了确定每个组成部分的大小,该函数将字符串划分为整数。然后用一个for循环来遍历字符串并提取各个部分。有了一个样本字符串和一个整数,main函数执行divideString函数并打印出产生的部分。
语法
func append(slice, element_1, element_2…, element_N) []T
append函数用于向一个数组片断添加值。它需要一些参数。第一个参数是我们希望添加的数组,后面是要添加的值。然后,该函数返回包含所有值的数组的最终片断。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(format package)包,其中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步 – 在主函数中,调用divideString函数,传入一个样本字符串和一个整数。
-
第 10步 – 使用fmt.Println(parts)打印得到的部件,其中ln表示新行。
-
第 11步– 该算法通过使用整数除法将字符串分割成n个相等的部分,并使用for循环,通过计算每个部分的开始和结束索引来提取字符串的部分。
例子
在下面的例子中,我们将使用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!]
方法2:使用len法
在这个方法中,我们将学习如何将一个字符串分成 “N “个相等的部分。这个程序在使用数学包的ceil函数计算部分大小后,使用for循环将字符串分成n个部分。最终的输出结果是使用fmt包显示的。
语法
math.Ceil()
一个浮点数可以用上限法四舍五入到最接近的整数。
算法
- 第1步 – 创建一个包main,并在程序中声明fmt(格式包)包,其中main产生可执行的例子,fmt帮助格式化输入和输出。
-
第2步 – 创建一个函数main,并在该函数中把字符串和字符串的第n部分作为输入的大小。
-
第 3步 – 通过将输入字符串的长度除以size并四舍五入到最近的整数(使用算术),使用Ceil()方法确定每个部分的大小。
-
第4步 – 从头开始创建一个片断数组来存储输入字符串的成分。
-
第 5步 – 从索引0开始,使用for循环遍历输入字符串。
-
第6步– 通过将当前的循环索引乘以部件的大小,计算出当前部件的开始和结束索引,如果结束索引超过了输入字符串的长度,则改变它。
-
第7步 – 使用开始和结束索引对输入字符串进行切片,然后将得到的部件添加到部件阵列中。
-
第8步 – 当第一个循环完成后,使用另一个循环来输出输入字符串的每个部件及其索引。
-
第9步– 总的来说,这个程序利用了Golang中的数学和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方法。