関数を書き込もうとしています
func Anonymize(name string) string
名前を匿名化します。入力と出力のペアの例をいくつか示します。これにより、何をすべきかがわかります。
Müller → M.
von der Linden → v. d. L.
Meyer-Schulze → M.-S.
この関数は、任意の文字で構成された名前で動作するはずです。この機能を実装しているときに、次の質問がありました。
[]rune
またはが与えられた場合string
、文字に対応するすべての修飾子と結合アクセントも取得されるという意味で、完全な文字を取得するために取得する必要があるルーンの数をどのように計算しますか。たとえば、入力が[]rune{0x0041, 0x0308, 0x0066, 0x0067}
(文字列 ÄBC に対応します。ここで、Ä は A と結合ダイアレシスの組み合わせとして表されます) 場合、関数は 2 を返す必要があります。これは、最初の 2 つのルーン文字が最初の文字 Ä を生成するためです。最初のルーンだけを取った場合、間違っている A が得られます。
匿名化したい名前がアクセント付きの文字で始まる可能性があり、アクセントを削除したくないため、この質問に対する回答が必要です。