gpt4 book ai didi

go - 获取字符串数组中每个字符串的第一个字符

转载 作者:IT王子 更新时间:2023-10-29 02:28:37 24 4
gpt4 key购买 nike

我是 golang 的新手,我正在尝试获取字符串数组中字符串的第一个字符。看起来很容易,但我不知道如何处理。这是我到目前为止所做的:

package main

import (
"fmt"
"os"
"strings"
)

func acronym(s string) (acr string) {

// TODO: Your code here
var arrayOfStrings []string
arrayOfStrings = strings.Split(s, " ") //split string s into an array of strings based on space delimeter " "
for _, str := range arrayOfStrings {
fmt.Println(str)
}
return acr
}

func main() {
s := "Pan Galactic Gargle Blaster"
if len(os.Args) > 1 {
s = strings.Join(os.Args, " ")
}
fmt.Println(acronym(s))
}

我希望生成的字符串是 PGGB 我有点卡住了,因为我只遍历了字符串数组,但我想不出像 java 中有方法/函数 charAt() 的东西。谢谢!

最佳答案

something like in java where one has the method/function charAt()

在 go 中,字符串是不可变的字节序列,其内容以 UTF-8 编码。字符串表示大致但不完全等同于 []byte slice (对于此答案而言,区别并不重要)。

您可以在 go 中使用各种库方法:

  • 如果保证您的字符串由 ASCII 或其他单字节字符组成,您可以简单地索引字符串以恢复任意位置的字节。在第 i 位置索引字符串将返回该位置的字节。在您的情况下,这将是 str[0]

  • 如果您专门寻找第一个字符,而不是第一个字节,并且您的字符串可能包含更高字节顺序的 Unicode 代码点,您需要相应地将字符串解码为 Unicode。 unicode/utf8包为此提供支持。 acronym 循环中的以下代码将为您正确解码每个字符串 str 的第一个 UTF-8 编码 rune :

for _, str := range arrayOfStrings {
r, _ := utf8.DecodeRuneInString(str)
acr = acr + string(r)
}

您应该注意有关错误情况的 DecodeRuneInString 方法的文档:

If s is empty it returns (RuneError, 0). Otherwise, if the encoding is invalid, it returns (RuneError, 1). Both are impossible results for correct, non-empty UTF-8.

如果您的系统可能出现任何一种情况,请确保添加适当的错误处理逻辑来检查返回结果。

关于go - 获取字符串数组中每个字符串的第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52174632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com