Можете Вы обратный порядок строка в одной строке с LINQ или Лямбда-выражением

Да, мы делаем это путем хранения нашего SQL как части нашей сборки - мы сохраняем DROP.sql, CREATE.sql, USERS.sql, VALUES.sql и управление версиями ими, таким образом, мы можем вернуться назад к любой теговой версии.

у Нас также есть задачи Ant, которые могут воссоздать дб при необходимости.

Плюс, SQL тогда отмечен наряду с Вашим исходным кодом, который идет с ним.

14
задан Jon Seigel 18 May 2010 в 01:57
поделиться

6 ответов

Я не вижу в этом практического применения, но просто для развлечения:

new string(Enumerable.Range(1, input.Length).Select(i => input[input.Length - i]).ToArray())
23
ответ дан 1 December 2019 в 05:48
поделиться
var reversedValue = value.ToCharArray()
                         .Select(ch => ch.ToString())
                         .Aggregate<string>((xs, x) => x + xs);
7
ответ дан 1 December 2019 в 05:48
поделиться

Вариант с рекурсивной лямбдой:

  var value = "reverse me";
  Func<String, String> f = null; f = s => s.Length == 1 ? s : f(s.Substring(1)) + s[0]; 
  var reverseValue = f(value);

LP, Деян

5
ответ дан 1 December 2019 в 05:48
поделиться

Ну, я могу сделать это за один раз длинная строка, даже без использования LINQ или лямбды:

string original = "reverse me"; char[] chars = original.ToCharArray(); char[] reversed = new char[chars.Length]; for (int i=0; i < chars.Length; i++) reversed[chars.Length-i-1] = chars[i]; string reversedValue = new string(reversed);

(Уважаемые потенциальные редакторы: не не разворачивайте это на несколько строк. Все дело в том, что это одна строка, как указано в предложении над ней и вопрос.)

Однако, если бы я увидел, что кто-то избегает использования методов фреймворка ради этого, я бы поставил под сомнение их здравомыслие.

Обратите внимание, что здесь вообще не используется LINQ. Ответ LINQ будет таким:

string reverseValue = new string(original.Reverse().ToArray());

Избегать использования Reverse, но вместо этого использовать OrderByDescending:

string reverseValue = new string(original.Select((c, index) => new { c, index })
                                         .OrderByDescending(x => x.index)
                                         .Select(x => x.c)
                                         .ToArray());

Blech. Однако мне нравится ответ Мехрдада. Конечно, все это гораздо менее эффективно, чем прямой подход.

О, и все они тоже ошибочны. Обратить строку сложнее, чем изменить порядок кодовых точек. Рассмотрите возможность комбинирования символов, суррогатных пар и т. Д.

29
ответ дан 1 December 2019 в 05:48
поделиться

Вы можете использовать Aggregate для добавления каждого Char к перевернутой строке:

 "reverse me".Aggregate("", (acc, c) => c + acc);
5
ответ дан 1 December 2019 в 05:48
поделиться
new string(value.Reverse().ToArray())
20
ответ дан 1 December 2019 в 05:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: