Перевернуть строки, содержащиеся в каждой паре совпадающих скобок, начиная с самой внутренней пары - C#
Формулировка задачи:
Написал почти всё) Только вот думаю,как реализовать замену в самой исходной строки на найденные подстроки.
Вот тест-кейсы:
string s = "abc(cba)ab(bac)c";
string pattern = @"\W[a-z]*\W";
Regex rgx = new Regex(pattern);
Match match = rgx.Match(s);
string temp = "";
while (match.Success)
{
temp += match.Groups[0].Value;
match = match.NextMatch();
}
char [] res = temp.Where(x=>Char.IsLetter(x)).ToArray();//найденные подстроки
Array.Reverse(res);//ещё вот с реверсом не до конца всё учел :(
char[] res_1 = s.ToArray();//исходная строка
/*int t = 0;
for (int i =0;i < res_1.Length;i++)
{
if (res_1[i] == '(')
{
}
}
*/
Console.Write(res_1);
/*"abcabcabcabc"*/s = "a(bc)de" => "acbde"
s = "co(de(fight)s)" =>"cosfighted"
-____-
Решение задачи: «Перевернуть строки, содержащиеся в каждой паре совпадающих скобок, начиная с самой внутренней пары»
textual
Листинг программы
string s = "co(de(fight)s)";
for(;;)
{
string temp = Regex.Replace(s, @"\([^()]+\)", m => m.Value.Substring(1,m.Value.Length-2).Reverse());
if (s == temp) break;
s = temp;
}
Console.WriteLine(s);