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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.