Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用字符串安全地将字节写入UTF-8字符。生成器?_String_Go - Fatal编程技术网

String 使用字符串安全地将字节写入UTF-8字符。生成器?

String 使用字符串安全地将字节写入UTF-8字符。生成器?,string,go,String,Go,我正在做一个练习,我必须倒转一些弦。我听说Go strings.Builder是目前创建字符串的最快方法,所以我做了以下工作: func String(toReverse string) string { var reversedString strings.Builder for i := len(toReverse) - 1; i >= 0; i-- { reversedString.WriteByte(toReverse[i]) }

我正在做一个练习,我必须倒转一些弦。我听说Go strings.Builder是目前创建字符串的最快方法,所以我做了以下工作:

func String(toReverse string) string {
    var reversedString strings.Builder

    for i := len(toReverse) - 1; i >= 0; i-- {
        reversedString.WriteByte(toReverse[i])
    }

    return reversedString.String()
}
问题是这样的多字节测试用例不起作用:

你好,,世界

变成

“\u008c\u0095ç\u0096¸ä,奥利”


谢谢。

虽然可以(默认情况下)通过索引访问字符串的各个字节,但Go字符串也可以转换为表示各个Unicode代码点的符文数组

首先,您需要将字符串转换为[]符文,并对其进行迭代:

func String(toReverse string) string {
    var reversedString strings.Builder
    runes := []rune(toReverse)

    for i := len(runes) - 1; i >= 0; i-- {
        reversedString.WriteRune(runes[i])
    }

    return reversedString.String()
}

请参阅以获取实时演示。

虽然可以通过索引访问字符串的各个字节,但Go字符串也可以转换为表示各个Unicode代码点的符文数组

首先,您需要将字符串转换为[]符文,并对其进行迭代:

func String(toReverse string) string {
    var reversedString strings.Builder
    runes := []rune(toReverse)

    for i := len(runes) - 1; i >= 0; i-- {
        reversedString.WriteRune(runes[i])
    }

    return reversedString.String()
}

有关实时演示,请参阅。

您正在反转字节,而不是字符。这个包裹应该对你有帮助。尽管在反转Unicode时仍有许多死角。一般来说,这是不安全的。您正在反转字节,而不是字符。这个包裹应该对你有帮助。尽管在反转Unicode时仍有许多死角。一般来说,这是不安全的。