Софтуерно Инженерство
Loading...
+ Нов въпрос
pavsavov avatar pavsavov 18 Точки

Въпрос относно конвертиране на strings[] в char[] чрез Lambda.

Здравейте.

Тъй като Lambda изразите не са ми силата,ще се опитам да обясня какво се опитвам да направя.

Имам вход от някакъв брой strings на един ред,разделени със space.

Това,което бих искал е всеки един отделен string да го превърна в char[],чрез Lambda израз.

Това,което успявам да постигна,чрез израза по-долу е да създам array,пълен с още array.

var firstLineString = Console.ReadLine().Split(' ').Select(x => x.ToCharArray());

Желанието ми е да мога да достъпя всеки един array[] и да продължа с неговата обработка.

Така както се случва,предполага записване на създадените char[] в отделна променлива,но не съм убеден как мога да го постигна това на същия ред.

Ще съм много благодарен за малко помощ и ще разясня допълнително,ако не съм описал добре,това което търся като резултат.

Благодаря предварително!

 


 

0
Fundamentals Module
k.sevov avatar k.sevov 1071 Точки

Както е кодът дотук си имаш IEnumerable колекция от char arrays и можеш да си ги обработваш по-натам със Select/Where, примерно ако искаш да ги завъртиш и след това да си ги направиш отново на стрингове може да стане с .Select(x => x.Reverse()).Select(x => string.Join("", x)) и .ToArray() накрая или каквото искаш да ги правиш. 

0
pavsavov avatar pavsavov 18 Точки

Примерно, ако те разбирам правилно, би трябвало нов стринг да се е създал,как мога да извикам някой от тези стрингове вече като продължа с програмта?

 

0
k.sevov avatar k.sevov 1071 Точки

Ако сложиш ToArray() накрая ще си имаш масив от стрингове и можеш да си ги викаш по индекс.

По-подробно идеята е, че Select взема всеки елемент от подадената му колекция, прилага му някаква трансформация (в ламбда функцията) и го вкарва в нова колекция, която ти се връща накрая като резултат. Ако следваме логиката на целия ред, в началото четем стринг от конзолата, след това го сплитваме на масив от отделни стрингове, след това Select взема всеки стринг и го прави на char[] и съответно ни връща колекция от char[]. Продължението от моя пример взема всеки от тях и го завърта, съответно връща колекция от обърнати char[]. Следващият Select взема всеки char[] и му слепва елементите в стринг, като накрая връща колекция от стрингове (залепените char[]) и тази колекция можем да си я направим на стандартен масив, лист или да си я foreach-ваме директно. 

0
29/10/2017 14:16:17
NikolayPopov avatar NikolayPopov 253 Точки

Не се създават нови стрингове, колекция от колекции от char имаш. Ако искаш да ги напревиш на колекция от стрингове 

var stringCollection = firstLineString .Select(x => new string(x.ToArray()))

0
29/10/2017 14:09:37