所以我正在编写一个C#控制台应用程序。我有一个文本文件,我想发送到数据库。计划是有多个文本文件,只有一个插入。第一线似乎一切顺利。一旦我到达第二行,阵列认为它只有2的长度。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace UKImporter
{
class Program
{
static void Main(string[] args)
{
string[] lines = System.IO.File.ReadAllLines(@"C:\out\output.txt");
System.Console.WriteLine("Contents of writeLines2.txt =:");
foreach (string line in lines)
{
string sellername, sku, date1, quantity1, date2, asin, date3, date4, FNSKU;
char[] tabs = { '\t', '\t', '\t', '\t', '\t', '\t', '\t', '\t', };
string[] words = line.Split(tabs);
sellername = words[0];
sku = words[1];
date1 = words[2];
quantity1 = words[3];
date2 = words[4];
asin = words[5];
date3 = words[6];
date4 = words[7];
FNSKU = words[8];
Console.WriteLine("\t" + line);
UKDataBLL u = new UKDataBLL();
//u.AddToDatabase(sku, DateTime.Now, Convert.ToInt16(quantity1), DateTime.Now, asin, DateTime.Now, DateTime.Now, FNSKU);
foreach (string s in words)
{
System.Console.WriteLine(s);
}
}
// Keep the console window open in debug mode.
Console.WriteLine("Press any key to exit.");
System.Console.ReadKey();
}
}
}
编辑这是文件的一些文本
A2LQ9QFN82X636 ACD_fivecrowns 6/1/11 5:30 0 6/1/11 5:30 B00000IV35 6/1/11 5:30 6/1/11 5:30 X0000PGTT9
A2LQ9QFN82X63 ACD_caylus_magna_carta 6/1/11 5:30 0 6/1/11 5:30 B000N3SOUM 6/1/11 5:30 6/1/11 5:30 X0000PGM23
A2LQ9QFN82X63 AMX_JrSpaceHelmet-LBL 6/1/11 5:30 0 6/1/11 5:30 B0008F6WMM 6/1/11 5:30 6/1/11 5:30 X0000PQBUL
答案 0 :(得分:3)
你只需要
string[] words = line.Split('\t');
然后你必须验证内容和你的操作是否匹配,这是一个粗略的想法:
System.Diagnostics.Trace.Assert (words.Count == 9);
答案 1 :(得分:2)
使用上面的代码,我创建了一个符合您预期结构的简单输出文件步骤,并且您的代码正确地解析了该文件。您的问题似乎是基于数据
string[] content = new string[] { "a\tb\tc\td\te\tf\tg\th\ti", "a\tb\tc\td\te\tf\tg\th\ti" };
System.IO.File.WriteAllLines(@"C:\sandbox\output.txt", content);
答案 2 :(得分:1)
拆分的tabs参数只需要有一个制表符。您告诉它要拆分的所有可能值。如上所述,您告诉它在选项卡或选项卡上拆分等等。
第二行可能格式不正确。
您可以从导入文件中发送几行的副本吗?
答案 3 :(得分:1)
我真的不明白为什么你需要在split方法中指定所有这些制表符。
做这样的事情:
foreach (string line in lines)
{
string[] columns= line.Split('\t');
if (columns.Length != 9) // Or how many colums the file should have.
continue; // Line probably not valid
// Now access all the columns of the line by using
// columns[0], columns[1], etc
}