2017-12-13 1 views
0

Ich habe Liste von Zeichenketten wieErhalten Teile String, getrennt durch Trennzeichen

FDENR8027ROR 0.10-CTW-SI2-2-0-0-A4 
FDENR7932ROR-1-0-0-A2 
FDENS3311-4-5-105-A2 
FDENS1759-T-6-1-107-A3 

Der Ausgang benötigt als geschaffen werden,

FDENR8027ROR 0.10-CTW-SI2, 2, 0 , 0, A4 
FDENR7932ROR, 1, 0, 0, A2 
FDENS3311, 4, 5, 105, A2 
FDENS1759-T, 6, 1, 107, A3 

Die Schwierigkeit ist, muss ich für - (Bindestrich überprüfen) ab Ende der Zeichenfolge und nur die letzten vier Zeichenfolgen müssen getrennt werden. Der verbleibende Text kann unverändert verwendet werden.

Ich habe versucht:

string s = "FDENR8027ROR 0.10-CTW-SI2-2-0-0-A4"; 
int idx = s.LastIndexOf('-'); 
Console.WriteLine(s.Substring(0, idx)); //FDENR8027ROR 0.10-CTW-SI2-2-0-0 
Console.WriteLine(s.Substring(idx + 1)); //A4 

Aber es ist einmal, was ist mit anderen drei Saiten. ? :(

Wie es tun

+1

Verwenden Sie die "Split" -Funktion und durchlaufen Sie jeden Teil im resultierenden Array –

+1

Ich möchte 'FDENR802 7ROR 0.10-CTW-SI2' diese Zeichenfolge; 'Split' wird das in' FDENR8027ROR 0.10', 'CTW',' SI2' zerstören! – Vikrant

+1

Wenn es immer die gleiche Anzahl von Zeichen im ersten Bit ist, entferne diese zuerst und arbeite nur am letzten Teil :) –

Antwort

1

Etwas wie folgt aus:.

string s = "FDENR8027ROR 0.10-CTW-SI2-2-0-0-A4"; 
string[] parts = s.Split('-'); 
List<string> result = new List<string>{ string.Join("-", parts.Take(parts.Length - 4)) }; 
result.AddRange(parts.Skip(parts.Length - 4).Take(4)); 

Meine Arbeit fiddle

+0

Ich habe diesen Code in 'for' Schleife durch die Liste iterieren. Arbeitete wie gewünscht – Vikrant

2

Dies ist eine ziemlich einfache Art und Weise, es zu tun:

var str = "FDENR8027ROR 0.10-CTW-SI2-2-0-0-A4"; 
var arr = str.Split('-'); 
var result = new string[] { 
    string.Join("-", arr.Take(arr.Length-4).ToArray()), 
    arr[arr.Length-4], 
    arr[arr.Length-3], 
    arr[arr.Length-2], 
    arr[arr.Length-1] 
}; 
+0

Ihre Antwort funktioniert, +1 dafür, aber ich habe eine Liste solcher Zeichenfolgen. und müssen eine Abfrage darauf anwenden. Also, wie kann ich es im laufenden Betrieb tun :( – Vikrant

+0

Sie können immer eine Methode dafür erstellen ... –

Verwandte Themen