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>
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 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>
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>
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!