golang 字符串遍历
时间: 2023-09-16 10:08:02 浏览: 135
在 Go 中,字符串可以被视为一个字符的切片。因此,遍历字符串可以使用类似于遍历切片的方式。
以下是使用 for 循环遍历字符串的示例代码:
```
package main
import "fmt"
func main() {
str := "Hello, world!"
for i := 0; i < len(str); i++ {
fmt.Printf("%c ", str[i])
}
}
```
输出结果:
```
H e l l o , w o r l d !
```
另一种遍历字符串的方式是使用 range 关键字。使用 range 关键字可以遍历字符串的 Unicode 码点:
```
package main
import "fmt"
func main() {
str := "Hello, 世界"
for _, ch := range str {
fmt.Printf("%c ", ch)
}
}
```
输出结果:
```
H e l l o , 世 界
```
在这个示例中,`range str` 返回字符串中的 Unicode 码点和对应的字符。由于我们不需要使用索引,因此我们可以使用下划线 `_` 忽略它。
注意:在 Go 中,字符串是不可变的。因此,如果需要修改字符串,必须先将其转换为可变的字节数组,然后再进行修改。
相关问题
golang 字符串截取
在Golang中,如果要截取一个字符串,可以使用切片的方式来实现。但是当截取的字符串中包含中文时,会出现问题,因为在Golang中,中文字符在UTF-8编码下占据3个字节的长度。这就导致切片截取时会出现乱码或者截取不准确的情况。
为了解决这个问题,我们可以自定义一个函数来进行中文字符串的截取。可以通过将字符串转换为切片,然后根据指定的字节数进行截取。可以使用range和for循环来逐个遍历字符,并根据字符的字节数来进行判断和截取。
例如,下面的代码演示了如何使用自定义函数来解决中文字符串截取的问题:
```go
// 字符串截取函数
func Substr(str string, start, length int) string {
rs := []rune(str)
rl := len(rs)
end := start + length
if start < 0 || start >= rl || length <= 0 {
return ""
}
if end > rl {
end = rl
}
return string(rs[start:end])
}
func main() {
s := "Hello, 世界"
result := Substr(s, 7, 2)
fmt.Println(result) // 输出 "世界"
}
```
以上代码中的Substr函数将输入的字符串转换为rune类型的切片,然后根据指定的起始位置和长度来进行截取。最后将截取的子串转换为string类型并返回。
golang 字符串数组剔除另一个数组中的元素
在 Go 语言中,可以使用 for 循环和 range 关键字遍历字符串数组,并使用字符串比较函数判断两个字符串是否相等,从而实现从一个字符串数组中剔除另一个字符串数组中的元素。以下是一个示例代码:
```go
package main
import "fmt"
func main() {
arr1 := []string{"apple", "banana", "orange", "pear"}
arr2 := []string{"banana", "kiwi", "pear"}
// 遍历 arr1 数组,将不在 arr2 中的元素添加到新的数组中
result := []string{}
for _, str := range arr1 {
exists := false
for _, s := range arr2 {
if str == s {
exists = true
break
}
}
if !exists {
result = append(result, str)
}
}
fmt.Println(result) // 输出 [apple orange]
}
```
在这个示例中,我们定义了两个字符串数组 arr1 和 arr2,其中 arr2 包含了需要从 arr1 中剔除的元素。通过 for 循环和 range 关键字遍历 arr1 数组,对每个元素进行判断,如果该元素不在 arr2 中,则将其添加到新的数组 result 中。最后输出 result 数组,即可得到从 arr1 中剔除 arr2 中元素的结果。
阅读全文