Профил
Loading...
+ Нов въпрос
rosen.ivanov avatar rosen.ivanov 129 Точки

Ако имаш string str = "1 2 3 4 5" и искаш да вземеш всяко число и да го парснеш към инт, трябва да си направиш масив от интове по следния начин: int[] numbers = str.Split(' ').Select(int.Parse).ToArray(); В случая разделителя ти е спейс, но може да имаш няколко разделителя, например запетайка и спейс. Тогава ще стане int[] numbers = str.Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();. Тук за да разделиш по няколко символа, в сплита трябва да си направиш масив от чарове. Може и с масив от стрингове: int[] numbers = str.Split(new string[] { ", " }, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray(); А с "StringSplitOptions.RemoveEmptyEntries" си гарантираш, че ще изтриеш всички излишни празни пространства, които биха ти направили проблем.

Ако пак не ти стане ясно, дай някакъв пример за да се опитам да ти го обясня по-конкретно.

0
12/06/2017 22:09:49
Simeon22 avatar Simeon22 12 Точки

Много благодаря за разяснението! Сега ще го изпробвам в задачи и ще разбера дали ми е станало ясно. Поздрави!

0
sevgin0954 avatar sevgin0954 564 Точки

Split взима стринг примерно  

string word = "1 2 3";

и го разделя по зададен char примерно по празно растояние

word.Split(' ');  и връща елементите разделени в масив от стрингове.

За да го направиш на числа трябва да ползваш Select метода който взима всички елементи и ги прави нещо примерно Select(int.Parse) и връща нещо което нямам представа какво е но не е масив тъй че слагаш накрая ToArray() за да стане масив и се получава   int[] arr = word.Split(' ').Select(int.Parse).ToArray();  Може и да го направиш без Select в масив от стрингове и после едно по едно с for цикъл да си ги парсваш в int масив но така е по кратко

0
12/06/2017 22:25:03
Simeon22 avatar Simeon22 12 Точки

Благодаря, обяснил си го кратко и ясно!

0
Pilgrimage avatar Pilgrimage 515 Точки

Самата функция Split() служи да ти нацепи някакъв стринг по зададени разделители. Разделителят (сепаратор)  може да бъде само от един символ и е от тип char. Но пък можеш да си направиш масив от чарове (в самият Split или предварително) и да сплитваш едновременно по всички. Когато ползваш масив от char-ове, имаш достъп до безценната функция StringSplitOptions.RemoveEmptyEntries, за която е писал и колегата rosen.ivanov  .

Тя служи да премахне от резултантния масив празните елементи, които се образуват, когато примерно имаме няколко поредни интервала (или други разделители). След това, можеш да парснеш останалите елементи от поредицата (за които знаеш, че са числа) към int с функцията .Select(int.Parse) и накрая да преобразуваш поредицата в някаква колекция, примерно масив със ToArray().

 

0
12/06/2017 22:23:44
Simeon22 avatar Simeon22 12 Точки

Благодаря за ясният отговор!

0
ivan_gy6ev avatar ivan_gy6ev 3 Точки

Колеги ако може малко помощ!  не виждам къде има проблем  за да дава 75/100 точки в моето решение https://pastebin.com/B7zW1rQS

0