Go에서는 문자열에서 악센트를 제거하고 악센트가 없는 해당 문자로 변환하는 것이 특별한 과제입니다. 다음은 문제에 대한 탐색과 잠재적인 해결책입니다.
이 문제를 해결하기 위한 한 가지 시도에는 "Performing Magic"이라는 제목의 블로그에 제공된 예를 기반으로 한 기능 구현이 포함됩니다. 이 예에는 unicode/norm 및 text/transform 패키지의 사용이 포함됩니다.
<code class="go">package main import ( "bytes" "code.google.com/p/go.text/transform" "code.google.com/p/go.text/unicode/norm" "fmt" "unicode" ) func isMn(r rune) bool { return unicode.Is(unicode.Mn, r) // Mn: nonspacing marks } func main() { r := bytes.NewBufferString("Your Śtring") t := transform.Chain(norm.NFD, transform.RemoveFunc(isMn), norm.NFC) r = transform.NewReader(r, t) fmt.Println(r) }</code>
그러나 이 구현에는 제한이 없습니다. 최신 버전의 Go(1.5 이상)에는 기능에 영향을 미칠 수 있는 변경 사항이 도입되었습니다.
Go 1.5에는 룬 패키지가 도입되었습니다. 악센트 제거 프로세스.
<code class="go">func Remove() transform.Transformer</code>
제거 기능은 일련의 유니코드 범주 코드를 허용하며 변환된 문자열에서 해당 범주에 속하는 모든 룬을 제거합니다. 예를 들어 공백 없음 표시(Mn)를 제거하려면 다음을 사용할 수 있습니다.
<code class="go">t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)</code>
이 변환 체인은 악센트가 있는 문자를 악센트가 없는 해당 문자로 변환하여 악센트 제거를 위한 보다 효과적이고 간결한 솔루션을 만듭니다. 가세요.
위 내용은 Go 문자열에서 악센트를 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!