microsoft visual studio community - C# - string zerlegen

Gast #4235551
Lesenswert?

Hallo,

ich habe Erfahrung mit uC programmieren, aber bin komplett neu bei 
microsoft visual studio community C#. Ich habe für mein Problem viel 
gegoogelt aber alle Beispiele beziehen sich auf immer auf ein 
Trennzeichen in einem String, diesen habe ich leider nicht. Ich empfange 
immer z.B. 12381122334455667788 über (receiveBuffer.Substring(0, 
buffPos);) und muss es zerlegen und in datagrid zeigen:
123 //ID
8   // länger der Daten
11  //Data 1
22  //Data 2
33  //Data 3
44  //Data 4
55  //Data 5
66  //Data 6
77  //Data 7
88  //Data 8


string CANMSG_receive = receiveBuffer.Substring(0, buffPos);
string CANMSG_reiceve_Data = receiveBuffer.Substring(0, buffPos);
dataGridView_receive.Rows.Add(CANMSG_receive, CANMSG_reiceve_Data, 
CANMSG_receive_amount);

Kann mir einer helfen?
Gruss Stefan
Gast #4235623
Lesenswert?

Unten ein möglicher Ansatz, den String per "Substring" 
auseinanderzupfriemeln. Für weitere Ratschläge sind die Infos zu mager.
1
static void Main()
2
{
3
  var input = "12381122334455667788";
4

5
  foreach (var value in GetValues(input)) Console.WriteLine(value);
6
  // ...
7
  var x = GetValues(input).ToArray();
8
  // ...
9
}
10

11
public static IEnumerable<int> GetValues(
12
  string input,
13
  int nIdDigits = 3,
14
  int nLengthDigits = 1,
15
  int nDataElementDigits = 2)
16
  {
17
    if(input.Length < nLengthDigits + nDataElementDigits)
18
    {
19
      throw new ArgumentException("bla");
20
    }
21

22
    int curIdx = nIdDigits + nLengthDigits;
23
    int endIdx = input.Length;
24

25
    if(((endIdx - curIdx) % nDataElementDigits) != 0)
26
    {
27
      throw new ArgumentException("...");
28
    }
29

30
    while (curIdx < endIdx)
31
    {
32
      yield return int.Parse(input.Substring(curIdx, nDataElementDigits));
33
      curIdx += nDataElementDigits;
34
    }
35
  }

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren