private string TrimStringFromRepeatedCharacters(string str)
{
StringBuilder stringBuilder = new StringBuilder(str.Length);
bool hadHash = false;
bool hadDollar = false;
for (int i = 0; i < str.Length; i++)
{
if (str[i] == '#')
{
if (!hadHash || str[i - 1] == '#') // okay to have a string of hashes
{
hadHash = true;
stringBuilder.Append(str[i]);
}
}
else if (str[i] == '$')
{
if (!hadDollar)
{
hadDollar = true;
stringBuilder.Append(str[i]);
}
}
else
{
stringBuilder.Append(str[i]);
}
}
return stringBuilder.ToString();
}