Поменять символы в строке местами

329
26 апреля 2017, 08:57

Необходимо ввести через Writeline строку и используя процедуру поменять символы местами наоборот, например:

Входная строка = abc123

Результат работы программы = 321cba

Answer 1

Более элегантное и не такое накладное решение, чем у предыдущего ответчика, с использованием StringBuilder:

var a1 = "abc123";
var sb = new StringBuilder();
//В цикле мы начинаем читать элементы строки с конца.
for (int i = a1.Length-1; i >= 0; i--)
{                
    sb.Append(a1[i]);
}
Console.WriteLine(sb.ToString()); //321cba
Console.ReadLine();

Или вариант по короче с использованием массивов:

var a1 = "abc123";
var a1_reverse = a1.ToCharArray().Reverse();
Console.WriteLine(new string(a1_reverse.ToArray())); //321cba
Console.ReadLine();

Поскольку метод Reverse() возвращает IEnumerable<T> (в данном случае IEnumerable<char>, то для создания строки его нужно привести к массиву методом ToArray() и из массива символов уже создать строку.

Если Вам нужно сделать отдельную процедуру (метод) для этого - все просто:

public static string StringReverse(string a1){
/*
* Вставьте сюда код из первого или второго варианта, что я предложил.
*/
}

Или же Вы можете сделать расширяемый (extension) метод, который можно будет вызывать прямо на переменной класса string везде, где вы подключите (using) класс с этим методом:

public static string StringReversExt(this string a1){
/*
* Вставьте сюда код из первого или второго варианта, что я предложил.
*/
}

Теперь можно вызывать этот метод примерно так:

string a1 = "abc123";
Console.WriteLine(a1.StringReverseExt());
Console.ReadLine();

Более подробную информацию об расширяемых методах можно почитать, скажем, на msdn.

Удачи!

Answer 2
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите строку");
            //var a1 = "abc123";
            var a1 = Console.ReadLine();
            var length = a1.Length;
            var a2 = "";
            for (int i = length; i >= 1; i--)
            {
                a2 += a1[i-1];
            }
            Console.WriteLine(a2);
        }
    }
READ ALSO
Автоинкремент версии/билда проекта Visual Studio

Автоинкремент версии/билда проекта Visual Studio

Best practice автоинкремента версии/билда относительно C# / Visual Studio?

386
Запуск приложения использующего localdb на разных компьютерах

Запуск приложения использующего localdb на разных компьютерах

Я написал приложение на языке C#, которое работает с базой данных MS SQLЕсли я переношу приложение на другой компьютер и пытаюсь запустить то оно...

331
Windows Forms application with ball walking randomly

Windows Forms application with ball walking randomly

Не могли бы вы,пожалуйста,создать корректно эту программу(по-своему,скорее всего,потому что я еще зеленый и пишу лапшу), чтобы я смог сравнить...

242