如何读取textfile以根据同一行中的另一行设置值

时间:2015-10-28 20:22:11

标签: c# text-files

我正在访问一个文本文件,其中包含列中的值,行格式,因此第一行是列,其余都是相应的行。

我有一个条件,例如,如果列名为BSC且其值为BSC37BSC38,我必须将值设置为region_code = "AUH";。如果值为BSCN10,则region_code可以是AUHDBL,因此此处列名的另一个值为" LAC" == 3然后region_code是' AUH'否则如果" LAC" == 4那么region_code是' DXB'。

我坚持要实现它,因为这些值在同一行和顺序进行。

这是我到目前为止所做的:

string[] cols = lines[0]
    .Trim()
    .Split(new[] { '\t', ' ' }, StringSplitOptions.RemoveEmptyEntries);

int liness = 1;
foreach (string line in lines.Skip(2))
{
    string[] cells = line
        .Trim()
        .Split(new[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);

    for (int counter = 0; counter < cols.Length; counter++)
    {
        string cellValue = "N/A";
        if (counter < cells.Length)
            cellValue = cells[counter];

        if (cols[counter] == "BSC")
        {               
            insvalues2gericson.Add(new FormField("BSC_ID", cellValue, 2));
            if (cellValue == "BSC37" || cellValue == "BSC38" )
            {
                region_code = "AUH";
            }
            else
            if (cellValue == "BSCN10")
            {
               //here i need to coding
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

你可以这样做。将第一行放在列列表中。浏览剩余的行,将每行放在单元格列表中。然后,按列名称获取某列的索引(例如columns.IndexOf("BSC"))以获取单元格值。这样,您就可以轻松访问列BSCLAC的单元格值。< / p>

using System;
using System.Linq;

public class Program
{
    public static void Main()
    {       
        var text = "BSC,LAC" + Environment.NewLine
            + "BSC37,1" + Environment.NewLine
            + "BSC38,2" + Environment.NewLine
            + "BSCN10,3"+ Environment.NewLine
            + "BSCN10,4";

        var rows = text.Split(new string[]{Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries).ToList();
        var columns = rows[0].Split(',').ToList();

        foreach(var row in rows.Skip(1)) {
            var cells = row.Split(',');

            string regionCode = "";

            if(cells[columns.IndexOf("BSC")] == "BSC37" 
              || cells[columns.IndexOf("BSC")] == "BSC38") { 
                regionCode = "AUH";
            }

            if(cells[columns.IndexOf("BSC")] == "BSCN10")
            {
                if(cells[columns.IndexOf("LAC")] == "3") {
                    regionCode = "AUH";
                } 
                if(cells[columns.IndexOf("LAC")] == "4") 
                    regionCode = "DXB";
                }
            }

            Console.WriteLine("{0},{1}->{2}",cells[0],cells[1], regionCode);
        }
    }
}