2016-12-11 3 views
0

私は別のプロジェクト経由で追加する車両に関する情報を含む.txtファイルを持っています。テキストファイルを読み込み、各VIN番号を取得し、フォームがロードされるときにコンボボックスに実際の番号だけを置きたいと思います。テキストファイルから値を返す:C#

モデル:: 'モデル'

メーカー:「メーカー

VIN番号: 'VIN番号'

これは何私である txtファイル内の各車両についての情報は次のようになります持っている:

using (StreamReader reader = new StreamReader(@"D:\carCenter\carCenter\bin\Debug\Vehicles.txt")) 
     { 
      string[] lines = File.ReadAllLines(@"D:\carCenter\carCenter\bin\Debug\Vehicles.txt"); 
      foreach(string line in lines) 
      { 
       if (line.Contains("VIN")) 
       { 
        Char colon = ':'; 
        string[] vins = line.Split(new string[] {"VIN Number: "}, StringSplitOptions.None); 

        for (int i = 0; i < 1; i++) 
        { 
         foreach(var vin in vins) 
         { 
          vinComboBox.Items.Add(vins[i]); 
         } 

        } 

       } 
      } 
+1

正確な質問は何ですか?あなたは何と苦闘していますか? –

+0

これは、コンボボックスにvin番号を追加していないので、実際の番号からラベル(「VIN番号:」)を分割する方法はありますか?申し訳ありませんが、私は非常に明確ではありません –

+0

WinForms、WPF、またはASP.NetのためのこのコードはどのようなUIですか? –

答えて

2

一つの解決策は、このような汎用的な機能を持つことです。

private String GetDataToRightOfLastColon(String line) 
{ 
    line = line.Trim(); 

    var indexOfLastColon = line.LastIndexOf(':'); 

    /* If line does not contain a ':' character, 
    or ':' is the last non-space character in line, 
    throw an exception. */ 
    if ((indexOfLastColon == -1) || (indexOfLastColon == (line.Length - 1))) 
    throw new ArgumentException(
     String.Format("The line '{0}' does not have the correct format.", line)); 

    return line.Substring(indexOfLastColon + 1).Trim(); 
} 

次は、テキストファイルを処理し、コンボボックスを移入するためにLINQを経由してその機能を適用します。

​​
+0

これはうまくいくようです!残念ながら、私はLINQに慣れていません。 Form_Loadイベント内に2番目のコードブロックを追加するか、別の場所に配置しますか?ありがとう –

+0

元の質問のコードブロック全体を 'vinComboBox.Items.AddRange(...);'コードに置き換えてください。 –

+0

[OK]私はそれをして、私にエラー '引数1:' System.Collections.Generic.IEnumerable 'から'オブジェクト[] 'に変換できません –

関連する問題