在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中文網其他相關文章!