private string GetRangeFromCharacters(Characters range)
{
if (range == _previousRange)
return _rangeCache;
StringBuilder sb = new StringBuilder();
if (range.HasFlag(Characters.Letters))
sb.Append("abcdefghijklmnopqrstuvwxyz");
if (range.HasFlag(Characters.LettersUppercase))
sb.Append("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
if (range.HasFlag(Characters.Numbers))
sb.Append("0123456789");
if (range.HasFlag(Characters.SymbolsBasic))
sb.Append("!-_.+");
if (range.HasFlag(Characters.SymbolsAdvanced))
sb.Append("'^%&/()=?~;,{[]}");
string ret = sb.ToString();
_previousRange = range;
_rangeCache = ret;
return ret;
}