> 백엔드 개발 > Golang > Go의 UTF-8 문자열에서 분음 부호를 효율적으로 제거하는 방법은 무엇입니까?

Go의 UTF-8 문자열에서 분음 부호를 효율적으로 제거하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-08 14:03:11
원래의
544명이 탐색했습니다.

How to Efficiently Remove Diacritics from UTF-8 Strings in Go?

Go에서 발음 구별 부호 제거

UTF8로 인코딩된 문자열로 작업할 때 "žůžo"의 악센트와 같은 발음 구별 부호를 제거해야 할 수도 있습니다. ""zuzo"를 얻으려면. 이러한 시나리오를 효율적으로 처리하기 위해 Go에서 사용할 수 있는 표준 라이브러리와 기술이 있습니다.

한 가지 접근 방식은 unicode.Is() 함수를 활용하여 발음 구별 부호(공백 표시가 없는 경우 "Mn"으로 분류된 문자)를 식별하는 것입니다.

다음 코드 조각은 유니코드/표준을 사용하여 주어진 문자열에서 발음 구별 부호를 제거하는 방법을 보여줍니다. golang.org/x/text/transform 패키지:

package main

import (
    "fmt"
    "unicode"

    "golang.org/x/text/transform"
    "golang.org/x/text/unicode/norm"
)

func isMn(r rune) bool {
    return unicode.Is(unicode.Mn, r) // Mn: nonspacing marks
}

func main() {
    t := transform.Chain(norm.NFD, transform.RemoveFunc(isMn), norm.NFC)
    result, _, _ := transform.String(t, "žůžo")
    fmt.Println(result)
}
로그인 후 복사

이 코드는 일련의 변환을 적용하여 발음 구별 부호를 제거합니다.

  1. 정규화된 형식 분해(NFD): 문자열을 다음을 포함한 기본 유니코드 문자로 나눕니다. 분음부호.
  2. RemoveFunc(isMn): 간격 없는 문자를 필터링합니다(분음부호).
  3. 정규화 형식 구성(NFC): 재구성합니다. 없는 문자열 발음 구별 부호.

결과적으로 출력은 다음 예와 같이 발음 구별 부호가 제거된 문자열이 됩니다: "žůžo" => "zuzo".

위 내용은 Go의 UTF-8 문자열에서 분음 부호를 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿