私は、タブ区切りのファイルを解析し、別のプログラムにデータを書き込むための自動化プログラムを作成しています。現在のところ、ファイルの各行をタブ単位で分割し、それぞれのコマンドで異なるエントリを使用します。私の問題は、解析しているすべてのデータエントリにフィールドの「X」が必要ですが、空のフィールドが数多くあり、他のタブの直後に続くタブがあることがあります。文字列を tで分割すると連続するタブで問題が発生しますか?
スプリットファイルラインから文字列のリストにアクセスしようとすると、自分自身がかなり頻繁にIndexOutOfRangeException
になることがあります。複数のタブでリストが「X」個のフィールドで終わるとは限らないため、この例外がスローされますか?もしそうなら、これを回避する方法はありますか?
[EDIT] HERESにコード:
string[] parts = line.Split('\t');
String Organization = parts[0];
String SalesRep_FirstName = SalesRep.Split(' ').First();
String SalesRep_LastName = SalesRep.Split(' ').Last();
String Opportunity = parts[1] == "" ? "" : parts[1];
String Type = parts[6] == "" ? comboBox1.SelectedItem.ToString() : parts[6];
String CloseMonth = (parts[5].Split('/'))[0] == "" ? "12" : (parts[5].Split('/'))[0];
String CloseDay = (parts[5].Split('/'))[1] == "" ? "21" : (parts[5].Split('/'))[1];
String CloseYear = (parts[5].Split('/'))[2] == "" ? "2012" : (parts[5].Split('/'))[2];
String Stage = (parts[2].Split('-'))[0] == "" ? "1" : (parts[2].Split('-'))[0];
String Probability = parts[4] == "" ? "0" : (Math.Round(decimal.Parse(parts[4])/10) * 10).ToString();
String Source = parts[7] == "" ? "" : parts[7];
String Department = Type;
String Product = Opportunity;
String Revenue = parts[3] == "" ? "" : parts[3];
理想的には、リストparts
の各インスタンスは、「shouldn 9つのエントリ(そのここで参照されていないのでparts[8]
は、冗長である)
例外が発生している場所にコードを掲載しました –
@Jordan:そうです、あなたはそこで分割する*ロット*をやっています。例えば、 'parts [5]'は空で、 'CloseYear'が間違っているかもしれません。基本的には、問題はタブで分割されているとは思わない...例外が発生したときに問題が発生しているデータをログに記録しますか? –
並べ替えこれは私の最初のwinformsアプリケーションであり、私は多くのことを学んでいます。私はいくつかの基本的なロギングをやっていますが、私の問題の詳細について多くの洞察を提供することはできません。しかし、私は分割の意味を見ているので、私はそれを見てみよう –