如何读取基于同一行中另一个设置值的文本文件

本文关键字:设置 另一个 文件 文本 于同一 何读取 读取 | 更新日期: 2023-09-27 18:19:44

我正在访问一个文本文件,该文件的值为列、行格式,因此第一行为列,其余为所有对应的行。

我有一个条件,比如如果列名是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
            }
        }
    }
}

如何读取基于同一行中另一个设置值的文本文件

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

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