奇怪的数组问题

本文关键字:问题 数组 | 更新日期: 2023-09-27 17:58:27

所以我正在编写一个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

奇怪的数组问题

您只需要

 string[] words = line.Split(''t');

然后你必须验证内容和你的操作是否匹配,这是一个粗略的想法:

 System.Diagnostics.Trace.Assert (words.Count == 9);

使用上面的代码,我创建了一个简单的输出文件步骤,该步骤符合您的预期结构,并且您的代码能够正确地解析出文件。您的问题似乎是基于数据

    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);

拆分的tabs参数只需要有一个tab字符。你告诉它所有可能的值都要拆分。正如所写的,你告诉它在一个选项卡或一个选项卡上拆分,等等。

第二行的格式可能不正确。

你能从导入文件中发送几行的副本吗?

我真的不明白为什么需要在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
}