Maison > développement back-end > Golang > Comment supprimer efficacement les accents des chaînes Go ?

Comment supprimer efficacement les accents des chaînes Go ?

Barbara Streisand
Libérer: 2024-11-02 20:09:31
original
942 Les gens l'ont consulté

How to Efficiently Remove Accents from Go Strings?

Go Strings : éliminer les accents

Dans Go, supprimer les accents des chaînes et les convertir en leur équivalent non accentué présente un défi particulier. Voici une exploration du problème et une solution potentielle.

Une tentative pour résoudre ce problème comprend la mise en œuvre d'une fonction basée sur l'exemple fourni dans un blog intitulé "Performing Magic". L'exemple implique l'utilisation des packages unicode/norm et 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>
Copier après la connexion

Cependant, cette implémentation n'est pas sans limites. Les versions plus récentes de Go (à partir de la version 1.5) introduisent des modifications susceptibles d'affecter sa fonctionnalité.

Go 1.5 et le package de runes

Go 1.5 a introduit le package de runes, qui comprend une fonction de suppression pratique qui simplifie le processus de suppression d'accent.

<code class="go">func Remove() transform.Transformer</code>
Copier après la connexion

La fonction Supprimer accepte une série de codes de catégorie Unicode et supprimera toutes les runes qui entrent dans ces catégories de la chaîne transformée. Par exemple, pour supprimer les marques sans espacement (Mn), vous pouvez utiliser :

<code class="go">t := transform.Chain(norm.NFD, runes.Remove(runes.In(unicode.Mn)), norm.NFC)</code>
Copier après la connexion

Cette chaîne de transformation convertira les caractères accentués en leurs équivalents non accentués, ce qui en fait une solution plus efficace et plus concise pour la suppression des accents dans Allez-y.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal