Tim Barcz is looking for a solution to an interesting problem in his Coding Contest: Create a Programming Pearl post.
I decided to challenge myself by writing my solution as a single “line” of code:
public static class StringExtensions
{
private static Dictionary<char, char> _charMap = new Dictionary<char, char>
{
{ (char)8208, (char)45 },
{ (char)8211, (char)45 },
{ (char)8212, (char)45 },
{ (char)8722, (char)45 },
{ (char)173, (char)45 },
{ (char)8209, (char)45 },
{ (char)8259, (char)45 },
{ (char)96, (char)39 },
{ (char)8216, (char)39 },
{ (char)8217, (char)39 },
{ (char)8242, (char)39 },
{ (char)769, (char)39 },
{ (char)768, (char)39 },
{ (char)8220, (char)34 },
{ (char)8221, (char)34 },
{ (char)8243, (char)34 },
{ (char)12291, (char)34 },
{ (char)160, (char)32 },
{ (char)8195, (char)32 },
{ (char)8194, (char)32 }
};
public static string UnWordify(this string value)
{
return new string((from c in value
select _charMap.ContainsKey(c) ? _charMap[c] : c)
.ToArray());
}
}
OK, so I cheated and used a dictionary to create my map from the bad characters to the good ones, but the actual method is a single statement.