>  기사  >  백엔드 개발  >  유니코드 문자에 대한 룬을 처리하는 동안 Go에서 문자열을 어떻게 뒤집나요?

유니코드 문자에 대한 룬을 처리하는 동안 Go에서 문자열을 어떻게 뒤집나요?

Barbara Streisand
Barbara Streisand원래의
2024-10-27 22:59:29146검색

How do you Reverse a String in Go while Handling Runes for Unicode Characters?

Go에서 문자열 반전: 룬 및 유니코드 문자 처리

Go에서 문자열을 조작하면 유니코드 문자로 작업할 때 문제가 발생할 수 있습니다. 룬으로. 문자열이 문자 시퀀스로 처리되는 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>

룬으로 변환하면 문자 수준 교체 작업을 올바르게 수행할 수 있습니다.

위 내용은 유니코드 문자에 대한 룬을 처리하는 동안 Go에서 문자열을 어떻게 뒤집나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.