2015-07-29 5 views
-1

У меня есть строка с длиной var, например «0009000A000B000C», и я хочу разбить ее на каждые 4 чартера или каждый второй чартер, значение результата я хочу поместить в новую строку.String splitting using ChunksUpto

var str1= 0009; 
var str2= 000A; 
var str3= 000B; 
var str4= 000C; 

я есть попробовать этот код:

var str = "0009000A000B000C"; 
var splitgroup2 = ChunksUpto(str , 4); 

static IEnumerable<string> ChunksUpto(string str, int maxChunkSize) 
{ 
    for (var i = 0; i < str.Length; i += maxChunkSize) 
     yield return str.Substring(i, Math.Min(maxChunkSize, str.Length - i)); 
} 

, но я не знаю, как поставить возвращенное значение в другую строку Whit новое значение строки я хочу сделать этот вид:

dataGrid2.Rows.Add(modbusadd_dec, poiterlangrow1_dec, poiterlangrow2_dec, opt_dec, rangemin_dec + "-" + rangemax_dec, Nunit_dec, Nperfix_dec, Dunit_dec, Dprefix_dec, grouptype, splitgroup2); 
+0

, что вы имеете в виду 'каждый 2th' –

+1

Что такое 'ChunksUpTo'? – Sayse

+0

каждый второй номер, извините – user3223293

ответ

3
var str = "0009000A000B000C"; 

var splitgroup2 = ChunksUpto(str , 4); 

public string[] ChunksUpTo(string str, int count) 
{ 
    if(count == 0) 
     return null; 

    List<string> result = new List<string>(); 
    int chunkCount = str.Length/count; 
    for(int i = 0; i < temp; i++) 
     result.Add(new string(str.Take(count).ToArray())) 

    return result.ToArray(); 
} 

Я не проверял этот код, но он должен выглядеть так, вы можете взять этот код, повысить его и исправить ошибки (если выходит)

0

Вы можете создать метод для этого:

static string[] SplitInto(string value, int startIndex, int length) 
{ 
    List<string> result = new List<string>(); 
    for(; startIndex + length < value.Length; startIndex += length) 
     result.Add(valuel.Substring(startIndex, length)); 
    return result.ToArray(); 
} 

И использовать его как:

string[] str = SplitInto("0009000A000B000C", 0, 3);