2017-04-13 18 views
-5

の数でファイルをソート基本的に私は、例のように単語の数によってファイルをソートする必要があります。は言葉

  1. これは、これが第二ラインである
  2. 第四にある
  3. これは、これは私がこれにソートすることが必要になる言葉

の最初の行である

  • 第三次のとおりです。

    1. これは、これは第二行これは、このライン上の単語の数で

    そこでソート第である第三

  • ある
  • ある単語
  • の最初の行です。

  • +8

    、だから、何をしようとしなかったし、どこに立ち往生していますか? –

    +0

    宿題のような音... –

    答えて

    3

    単語は、ホワイトスペースで区切られている場合:white-space charactersによって分割されますSplit()Split(new char[],...)を使用して

    var sortedLines = File.ReadLines(path) 
    .OrderByDescending(line => line.Trim().Split(new char[]{},StringSplitOptions.RemoveEmptyEntries).Length); 
    

    :あなたが連続したりリード/末尾の空白をカウントしたくない場合は

    var sortedLines = File.ReadLines(path).OrderByDescending(line => line.Split().Length); 
    

    これには改行文字、スペース文字、またはタブ文字が含まれます。

    他のものを追加する場合は、char[]またはstring[]を手動で作成する必要があります。グッド

    +0

    @fubo:OPは、何が有効か無効かを説明していません。スプリットオーバーロードを使用してエッジケースを処理できます。しかし、私は今、ヒントを与えるために別のバージョンを示しました。 –

    +0

    私の最初のアイデアは、ソートのための空白文字の数を数えることでした。この問題に気付いた後、私は答えを破棄しました。D '.OrderByDescending(line => line.Count(x => x = ''))' – fubo

    0
    string[] lines = File.ReadAllLines(@"E:\1.txt"); 
    var sotedLines = lines.OrderByDescending(line => line.Split().Length) 
    .ToList(); 
    
    +0

    そしてなぜこれを並列化しますか?何のメリットもありません。 –

    +0

    @PatrickHofman私はそれがスレッドプールを使用して実行されると思った – Sajeetharan

    +0

    だから?これらの行を複数のスレッドで読み取ると、どのような利点がありますか? –

    0
    static void Main(String[] args) { 
    
         var lines = File.ReadAllLines(args[0]); 
         lines.OrderByDescending(s => s.Split().Count()); 
         File.WriteAllLines(args[0], lines); 
        } 
    
    +3

    その回答はすでに9分前に与えられました。 –

    +2

    @PatrickHofman:実際には、このdoesnt仕事 –