Entferne diakritische Zeichen mit Go

8

Wie kann ich alle diakritischen Zeichen aus der angegebenen UTF8-codierten Zeichenfolge mit Go entfernen? z.B. transformiere die Zeichenkette "žůžo" = & gt; %Code%. Gibt es einen Standardweg?

    
eeq 03.11.2014, 20:19
quelle

2 Antworten

15

Sie können die in Textnormierung in Go beschriebenen Bibliotheken verwenden.

Hier ist eine Anwendung dieser Bibliotheken:

%Vor%     
dyoo 03.11.2014, 20:33
quelle
0

Um ein bisschen auf die vorhandene Antwort zu erweitern:

Der Internet-Standard zum Vergleichen von Zeichenketten verschiedener Zeichensätze heißt "PRECIS" (Vorbereitung, Durchsetzung und Vergleich von internationalisierten Strings in Anwendungsprotokollen) und ist in RFC7564 . Es gibt auch eine Go-Implementierung bei golang.org/x/text/secure/precis .

Keines der Standardprofile wird tun, was Sie wollen, aber es wäre ziemlich einfach, ein neues Profil zu definieren. Sie möchten das Unicode Normalization Form D ("D" für "Decomposition", was bedeutet, dass die Akzente abgespalten werden und ihr eigenes kombinierendes Zeichen sind) anwenden und dann jedes Kombinationszeichen als Teil der zusätzlichen Zuordnungsregel entfernen und dann neu zusammensetzen mit der Normalisierungsregel. Etwas wie das:

%Vor%

Damit können Sie später Ihren Vergleich mit weiteren Optionen erweitern (z. B. Weitenmapping, Case Mapping, etc.)

Es ist auch erwähnenswert, dass das Entfernen von Akzenten fast nie das ist, was Sie tatsächlich tun möchten, wenn Sie solche Strings vergleichen, ohne jedoch Ihren Anwendungsfall zu kennen, kann ich diese Aussage über Ihr Projekt nicht wirklich machen. Um die Verbreitung von Precis-Profilen zu verhindern, sollte möglichst eines der vorhandenen Profile verwendet werden. Beachten Sie auch, dass keine Anstrengungen unternommen wurden, das Beispielprofil zu optimieren.

    
Sam Whited 03.11.2016 15:17
quelle

Tags und Links