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

You could try something like this. It works for accents. I haven't tested it on other characters yet.

import std.stdio;
import std.algorithm;
import std.array;
import std.conv;

enum
{
dchar[dchar] _accent = ['á':'a', 'é':'e', 'è':'e', 'í':'i', 'ó':'o', 'ú':'u', 'Á':'A', 'É':'E', 'Í':'I', 'Ó':'O', 'Ú':'U']
}

void main()
{
  auto str = "très élégant";
auto removed = to!string(str.map!(a => (a in _accent) ? _accent[a] : a));
  writeln(removed);  // prints "tres elegant"
}

Reply via email to