首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析csv文件中的空值并在c#中初始化为默认值?

如何解析csv文件中的空值并在c#中初始化为默认值?
EN

Stack Overflow用户
提问于 2017-02-02 20:04:59
回答 2查看 244关注 0票数 0

我正在尝试从CSV文件中读取数据,但是我的CSV文件有许多空单元格用于不同的列。因此,我希望捕获这些空单元格,并将这些空值初始化为默认值-1。我试图遍历这些值,但由于某些原因,它部分有效,部分无效。我能做错什么呢?

代码语言:javascript
复制
//Some of the columns are still empty even though they were supposed to 
//initialized to -1. While some others are initialized to -1.

public class DPdfView
{
    public DPdfView()
    {
        //ReadExcel("t.csv");
    }

    public String ReadCSV()
    {
        String cont = null;
        using (TextFieldParser parser = new TextFieldParser("t.csv"))
        {
            parser.TextFieldType = FieldType.Delimited;
            parser.SetDelimiters(",");
            while (!parser.EndOfData)
            {
                //Processing row
                string[] fields = parser.ReadFields();

                for (int i = 0; i < fields.Length; i++)
                {
                    if (fields[i].Length == 0)
                    {
                        fields[i] = "\n" + "-1";
                    }
                    //Console.WriteLine(fields[4]);
                }
                String Value_DATE = fields[2];
                String Booking_Date = fields[3];
                String Transaction = fields[4];
                String Reference = fields[7];
                String Money_Out = fields[8];
                String Money_In = fields[9];
                String Balance = fields[14];
                cont = cont + Value_DATE + "\n" + Booking_Date + "\n" + Transaction + "\n" + Reference + "\n" + Money_Out + "\n" + Money_In + "\n" + Balance;
            }
        }
        return cont;
    }
}

//根据m.rogalski的建议,这就是我所得到的。-1被附加到同一行,而不是附加到下一行。

代码语言:javascript
复制
VALUE_DATE
BOOKING_DATE
TRANSACTION
REFERENCE
MONEY.OUT
MONEY.IN
AVAILABLE.BALANCE-1 // the -1 should be appended to the next line
2847899
KES
-1
10/10/2016
9/11/2016
5403.759/11/2016
9/11/2016
Opening Balance
-1
-1
-1
-112/10/2016
12/10/2016
Mobile Mpesa Transfer
-1
1533
-1
-117-10-2016
17-10-2016
ATM Withdrawal
6.29006E+11
1000
-1
-117-10-2016
17-10-2016
ATM Withdrawal
6.29118E+11
2000
-1
-117-10-2016
17-10-2016
Mobile Mpesa Transfer
-1
2083
-1
-117-10-2016
17-10-2016
Transfer from Mpesa
-1
0
4000
-118-10-2016
18-10-2016
Mobile Mpesa Transfer
-1
333
-1
-118-10-2016
18-10-2016
Mobile Mpesa Transfer
-1
733
-1
-121-10-2016
21-10-2016
ATM Withdrawal
5.04158E+15
1000
-1
-121-10-2016
21-10-2016
Mobile Mpesa Transfer
-1
433
-1
-121-10-2016
21-10-2016
Mobile Mpesa Transfer
-1
883
-1
-121-10-2016
21-10-2016
Transfer from Mpesa
-1
0
5000
-124-10-2016
24-10-2016
Mobile Mpesa Transfer
-1
1583
-1
-124-10-2016
24-10-2016
Mobile Mpesa Transfer
-1
2033
-1
-125-10-2016
25-10-2016
Mobile Internal Transfer
-1
10000
-1
-125-10-2016
25-10-2016
Mobile Mpesa Transfer
-1
2033
-1
-125-10-2016
25-10-2016
Mobile Mpesa Transfer
-1
373
-1
-125-10-2016
25-10-2016
Mobile Mpesa Transfer
-1
50983
-1
-127-10-2016
27-10-2016
Mobile Mpesa Transfer
-1
1183
-1
-128-10-2016
28-10-2016
ATM Withdrawal
5.04158E+15
20000
-1
-128-10-2016
28-10-2016
Mobile Mpesa Transfer
-1
1333
-1
-131-10-2016
31-10-2016
Mobile Mpesa Transfer
-1
783
-1
-11/11/2016
1/11/2016
Mobile Mpesa Transfer
-1
4533
-1
-11/11/2016
1/11/2016
Transfer from Mpesa
-1
0
3650
-12/11/2016
2/11/2016
Mobile Mpesa Transfer
-1
833
-1
-13/11/2016
3/11/2016
Mobile Mpesa Transfer
-1
2033
-1
-14/11/2016
4/11/2016
ATM Withdrawal
5.04158E+15
3000
-1
-14/11/2016
4/11/2016
Mobile Internal Transfer
-1
0
3000
-14/11/2016
4/11/2016
Mobile Mpesa Transfer
-1
10033
-1
-17/11/2016
7/11/2016
Mobile Airtime Puchase
-1
150
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
1183
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
12283
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
1498
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
283
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
333
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
5033
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
568
-1
-17/11/2016
7/11/2016
Mobile Mpesa Transfer
-1
733
-1
-17/11/2016
7/11/2016
Transfer from Mpesa
-1
0
20100
-18/11/2016
8/11/2016
Mobile Mpesa Transfer
-1
2033
-1
-18/11/2016
8/11/2016
Mobile Mpesa Transfer
-1
383
-1
-18/11/2016
8/11/2016
Mobile Mpesa Transfer
-1
6533
-1
-18/11/2016
8/11/2016
Mobile Mpesa Transfer
-1
938
-1
-18/11/2016
8/11/2016
Transfer from Mpesa
-1
0
14000
-19/11/2016
9/11/2016
Closing Balance
-1
-1
-1
-1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-02 20:29:20

你的假设是空意味着没有任何迹象。仍然可以有像CRLF或许多其他标志。

尝试以下方法:

代码语言:javascript
复制
if (string.IsNullOrWhiteSpace(fields[i])) // (fields[i].Length == 0)
{
    fields[i] = string.Format("{0}-1", Environment.NewLine);
}

Online check

票数 0
EN

Stack Overflow用户

发布于 2017-02-02 20:33:09

尝试替换...

代码语言:javascript
复制
if (fields[i].Length == 0)
{
    fields[i] = "\n" + "-1";
}

有..。

代码语言:javascript
复制
if (String.IsNullOrEmpty(fields[i])) {
    fields[i] = "-1";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42001807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档