2017-04-14 7 views
2

Ich habe ein Szenario, wo ich eine Komma getrennte Zeichenfolge Nachname, Vorname. Ich muss es in FirstName LastName konvertieren.String.join Array von letzten Element

ist mein Code unten:

Public static void main(string [] args) 
{ 
     var str = "Lastname, FirstName": 
     var strArr = str.Split(','); 
     Array. Reverse(strArr); 
     var output = string.join(" ", strArr); 
} 

Gibt es einen besseren Weg, dies zu tun, wie in einer Zeile oder LINQ verwenden?

+0

wie 'output = strArr [1] + "" + strArr [0];'? Übrigens entfernen Sie nicht den Leerraum vor dem 'FirstName'-Wert, fügen Sie dazu ein' Trim() 'zu Ihren String-Instanzen hinzu. – Igor

+0

vergessen Sie nicht, Leerzeichen nach dem Aufteilen der Zeichenfolge zu entfernen –

+0

@igor Ich hatte das zuerst getan, aber es schlug fehl, da ich manchmal string.empty oder nur den Vornamen .. –

Antwort

1

Ja, es ist schon ein Reverse-Extension-Methode für IEnumerables:

var output = string.Join(" ",str.Split(',').Reverse()); 
1

Verwenden Aggregate und Schneiden Sie Ihre Namen nach der Trennung, Sie Umkehren nicht benötigen.

str.Split(',').Aggregate((lname, fname) => fname.Trim() + " " + lname.Trim()) 
0

Sorry für solch eine dumme Frage zu stellen, unten ist mein neuer Code ..

Public static void main(string [] args) 
    { 
      var str = "Lastname, FirstName": 
      var strArr = str.Split(',').Select(p=>p.Trim()).ToArray(); 
      var output = string.join(" ", strArr.Reverse()); 
    } 
1

Diese kümmert sich um eine Menge von den verschiedenen Grenzfälle. Du hast eines erwähnt, aber es nicht in deine erste Frage aufgenommen, also nehme ich an, dass es andere geben könnte.

var tests = new[]{"Lastname, FirstName", "Lastname, ", ", FirstName", "Lastname", "FirstName"}; 
foreach(var str in tests) 
{ 
    var strArr = str.Split(new[] {','}, StringSplitOptions.RemoveEmptyEntries) 
     .Where(x => !string.IsNullOrWhiteSpace(x)) 
     .Reverse() 
     .Select(x => x.Trim()); 
    var output = string.Join(" ", strArr); 
    Console.WriteLine(output); 
} 

Working Fiddle

Verwandte Themen