List<string> allKey = new List<string>();
List<string> key = new List<string>(); // это типа массива number где {3,2,1,2}
foreach (Match match in Regex.Matches(str, "\\{([^\\}]+)\\}"))
{
allKey.Add(match.Groups[1].Value);
}
foreach (string sKey in allKey)
{
string[] rndKey = sKey.Split('|');
int iKey = rnd.Next(rndKey.Length); // Random
keySubject.Add(rndKey[iKey]);
}
for (int g = 0; g < allKeySubject.Count; g++)
{
subject = subject.Replace("{" + allKeySubject[g] + "}", keySubject[g]); // Вот тут проблема, если использовать в str данные в {} разные то все ок, а если это скобки {} будут идентичны, они заменятся все на 1 значение =(
}