在 Go 中反转字符串:处理符文和 Unicode 字符
在 Go 中操作字符串可能会在处理 Unicode 字符时带来挑战,这些字符表示为作为符文。与 C 中字符串被视为字符序列不同,Go 将字符串视为字节向量。为了解决这个问题,我们必须在字节和符文之间进行转换以执行字符级操作。
让我们检查一下您提供的代码:
<code class="go">func inverte() { var strs, aux string // Generate 5 strings with random characters of sizes 100, 200, 300, 400, and 500 for i := 1; i < 6; i++ { strs = randomString(i * 100) fmt.Print(strs) // Attempt to reverse the characters for i2, j := 0, len(strs); i2 < j; i2, j = i+1, j-1 { aux = strs[i2] strs[i2] = strs[j] strs[j] = aux } } }</code>
代码中的问题是由赋值 strs 引起的[i2] = strs[j],其中 strs[i2] 和 strs[j] 都是字节。然而,要交换角色,您需要使用符文。为了解决这个问题,您可以使用 rune 函数将字节值转换为符文:
<code class="go">for i2, j := 0, len(strs); i2 < j; i2, j = i+1, j-1 { r1 := rune(strs[i2]) r2 := rune(strs[j]) strs[i2] = byte(r2) strs[j] = byte(r1) }</code>
通过转换为符文,您可以正确执行字符级交换操作。
以上是在处理 Unicode 字符的符文时,如何反转 Go 中的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!