>백엔드 개발 >Golang >Go의 UTF-8 문자열에서 문자를 올바르게 인덱싱하는 방법은 무엇입니까?

Go의 UTF-8 문자열에서 문자를 올바르게 인덱싱하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-17 18:17:10126검색

How to Correctly Index Characters in Go's UTF-8 Strings?

Golang 문자열의 문자 인덱싱: UTF-8 디코딩

Golang의 문자열 리터럴은 UTF-8로 인코딩된 문자 시퀀스이지만 개별 문자를 인덱싱합니다. 배열과 유사한 구문 string[index]를 사용하여 위치에 따라 예상치 못한 결과가 발생할 수 있습니다. 이는 UTF-8 문자가 여러 바이트를 차지할 수 있고 바이트 위치에 따른 인덱싱이 UTF-8 인코딩을 깨뜨릴 수 있기 때문입니다.

개별 문자를 정확하게 인덱싱하고 검색하기 위해 Golang은 여러 옵션을 제공합니다.

유니코드 코드 포인트 사용 (룬)

  • string([]rune("string")[index]): 문자열을 룬 조각으로 변환합니다. 여기서 각 룬은 유니코드 코드 포인트. 이 접근 방식은 UTF-8 바이트 위치에 관계없이 일관된 문자 인덱싱을 보장합니다.

예:

package main

import "fmt"

func main() {
    fmt.Println(string([]rune("HELLO, 世界")[1])) // "E"
    fmt.Println(string([]rune("HELLO, 世界")[8])) // "界"
}

바이트를 다음으로 변환 문자

  • string("byte"): 단일 바이트 ASCII 문자를 문자열로 변환합니다. 이는 ASCII 문자(처음 128개의 유니코드 문자)에만 적용 가능합니다.

예:

package main

import "fmt"

func main() {
    fmt.Println(string("HELLO"[1])) // "e"
}

위 내용은 Go의 UTF-8 문자열에서 문자를 올바르게 인덱싱하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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