循环遍历Golang中的每个字符

我在 Go 中有一个可变字符串。如何检查当前字符是否等于下一个字符?

我的代码是这样的,但仍然错误:

   message := "hhappy"

    for i, v := range message {
      if v[i] == v[i+1] {
        //print something
      }
    }

回答

由于rune可能大于单个字节(1 到 4 个字节),因此您无法真正检查切片中的下一项,因为某些字符(ASCII 除外)可能大于单个字节。这将使您的代码失败。

一个正确的选择是迭代字符串元素,将每个字符与前一个字符进行比较。这样,如果 arune重复,代码仍然可以工作。例如,

func main() {
    var prev rune
    message := "hhappyèèaa"
    for i, v := range message {
        if prev == 0 {
            prev = v
            continue
        }
        if prev == v {
            fmt.Printf("previous char: %s curr pos: %vn", string(v), i)
        }
        prev = v
    }
}

产出

previous char: h curr pos: 1
previous char: p curr pos: 4
previous char: è curr pos: 8
previous char: a curr pos: 11


以上是循环遍历Golang中的每个字符的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>