2017-04-14 8 views
2

私は、コンマ区切りの文字列LastName、FirstNameを取得しています。 FirstName LastNameに変換する必要があります。最後の要素のString.join配列

私のコードは以下の通りです:

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

これを行うには良い方法は、1行またはLINQを使用してのように、ありますか?

+0

'出力= strArr [1] + "" + strArr [0];'?あなたが 'FirstName'値の前にある空白を削除しないようにするには、文字列インスタンスに' Trim() 'を追加してください。 – Igor

+0

あなたの文字列を分割した後に白い空白を削除することを忘れないでください –

+0

私はそれをintiallyしましたが、時々私はstring.emptyまたは最初の名前を取得していませんでした.. –

答えて

1

はい、すでにIEnumerablesのためのリバース拡張メソッドがあります:

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

使用集計と分割後、あなたが反転する必要はありません、あなたの名前をトリム。以下

、このような愚かな質問をして申し訳ありません
str.Split(',').Aggregate((lname, fname) => fname.Trim() + " " + lname.Trim()) 
0

は、私の新しいコード..です

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

これは、様々なエッジケースの多くの世話をします。あなたは1つを言いましたが、最初の質問にそれを含めなかったので、他の人がいるかもしれないと思います。同様

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

関連する問題