Не могу разобраться, как перевернуть строку в C#
Нужно, чтобы слова не меняли буквы местами, но сами слова должны поменяться местами, например: было(мама мыла раму) а стало(раму мыла мама), не могу придумать какое действие сделать. пытался s+=mas[i], но вообще не получается.
string s = A_TB.Text;
char[] sep = { ' ' };
string[] mas = s.Split(sep,
StringSplitOptions.RemoveEmptyEntries);
for (int j=0;j<mas.Length;j++)
{
for (int i = mas.Length; i >= 0; i--)
}
B_TB.Clear();
foreach (string m in mas)
B_TB.AppendText(m + ' ');
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
for (int i = 0, j = mas.Length - 1; i < j; i++, j--)
{
string temp = mas[i];
mas[i] = mas[j];
mas[j] = temp;
}
Автор решения: Yaroslav
→ Ссылка
Сам метод:
public static class Exp
{
public static string ReverseOne(
this string str,
char[] separators,
StringSplitOptions options)
{
var temp = str.Split(separators, options);
var reverse = temp.Reverse().ToList();
var sb = new StringBuilder();
reverse.ForEach(x =>
{
sb.Append(x);
sb.Append(separators);
});
return sb.ToString().Trim(separators);
}
public static string ReverseTwo(
this string str,
char[] separators,
StringSplitOptions options)
{
var temp = str.Split(separators, options);
var reverse = temp.Reverse();
var separator = separators[0].ToString();
return string.Join(separator, reverse);
}
}
Пример использования:
str.ReverseOne(new char[1] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
str.ReverseTwo(new char[1] { ' ' }, StringSplitOptions.RemoveEmptyEntries)