On Friday, 28 October 2016 at 11:24:28 UTC, Alfred Newman wrote:
Hello,

I'm getting some troubles to replace the accented letters in a given string with their unaccented counterparts.

Let's say I have the following input string "très élégant" and I need to create a function to return just "tres elegant". Considering we need to take care about unicode chars, what is the best way to write a D code to handle that ?

Cheers

import std.stdio;
import std.algorithm;
import std.uni;
import std.conv;

void main()
{
    auto str = "très élégant";
    immutable accents = unicode.Diacritic;
    auto removed = str
        .normalize!NFD
        .filter!(c => !accents[c])
        .to!string;
    writeln(removed);  // prints "tres elegant"
}

This first decomposes all characters into base and diacritic, and then removes the latter.

Reply via email to