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.