как разделить эту строку на каждые 500 значений, заканчивающихся запятой
string val= "1,2,3,4,5,.....................,2000,2001";
//Solution
[1,2,3,...,500]
[501,502,503,...,1000]
[1001,1002,...,1500]
i need solution without loop Это странное (и, вероятно, невыполнимое) требование. Реализации будут где-то использовать цикл, даже если он скрыт внутри реализации метода Linq.
Как уже упоминали другие - без LOOP в любом месте сцены - этого действительно трудно достичь. Если только не сказать, что все ваши Ценности однозначны. Так что это значило бы. 500 + 499 = 999 будет индексом, на котором заканчивается первый список 500 CSV и так далее.
@fubo - Предположим, мы действительно нашли регулярное выражение, которое может делиться на 500-ю запятую. Что вернет Regex.Match (-а)? Список совпадений, который необходимо проверить с помощью цикла; не так ли?
Согласитесь с вашим решением (и хорошим регулярным выражением), однако, чтобы OP наконец представил / просмотрел результаты, необходим цикл для результата string [].
@PrateekShrivastava вопрос касался определения без цикла - op ничего не сказал о дальнейшей обработке.
Кто-нибудь думает, что Regex реализован без использования каких-либо циклов?





Под «без циклов» подразумевается, что вы счастливы позволить LINQ использовать циклы внутри себя, может быть, что-то вроде этого:
string s = "your,comma,string";
string[] ss = s.Split(',');
Print500(ss, 0);
private void Print500(IEnumerable<string> ies, int skip)
{
if (skip > ies.Count())
return;
Console.Out.WriteLine(string.Join(",", ies.Skip(skip).Take(500)));
Print500(ies, skip + 500);
}
Я не запускал его, поэтому могут возникнуть незначительные проблемы ..
String.Split использовал 1 цикл. IEnumerable.Count () использовал 1 цикл. string.Join () взял другой, а Skip () и Take () взяли там собственные циклы (грубо).
В моем коде нет циклов. Обратите внимание на первую строку сообщения. Если вы настаиваете на том, что требования к циклам не распространяются на BIOS, я думаю, вам не повезет практически во всем.
Я собираюсь использовать эту идею рекурсии, чтобы написать что-нибудь сейчас ...
Может, Рамаприяну стоило написать на codegolf .. :)
@PrateekShrivastava Рекурсия - это форма цикла… :)
Вместо этого вы можете сопоставить строку со следующим регулярным выражением (где 499 равно 500 минус 1):
(?:[^,]+,){0,4}[^,]+
Демо (здесь для разделения через каждые 5 запятых): https://regex101.com/r/nbRxdv/2
"мне нужно решение без петли" ... почему? Если цикл работает, почему бы просто не использовать его?