我正在尝试读取 txt 文件并读取第一列以获取第二列

我有一个 txt 文件,它有两个不同的值,所有数字,其中第一列的长度为 00 到 0000000 (长度为 2 到 12),第二列的长度为 0120 到 0111111111 (长度为 4 到 12) )。我的问题有很多:

  1. 如何查找特定值(如布尔搜索)

  2. 如何将对应的值返回到自己的字符串中

我尝试过但StreamReader没有成功(甚至无法使其发挥作用),并且我发现了诸如.Split、 、之类的东西.Parse,并在这里和网上尝试了许多示例,但这些示例实际上并没有做我需要的事情。

/* Example of useless code I found */

class ReadFromFile

{

    static void Main()

    {

        char[] delimiterChars = { ' ', ',', '.', ':', '\t' };


        string text = "one\ttwo three:four,five six seven";

        System.Console.WriteLine($"Original text: '{text}'");


        string[] words = text.Split(delimiterChars);

        System.Console.WriteLine($"{words.Length} words in text:");


        foreach (var word in words)

        {

            System.Console.WriteLine($"{word}");

        }

    }

}

嗯,该代码非常无用,它根本没有实现任务,因为它只是使用 .Split 函数来创建新行,而无助于查找特定值之后的内容。


所以具体来说,我想搜索 x 值并将 y 值保存为 z 值字符串(使用除单词字符串之外的这部分的数学术语)。


红糖糍粑
浏览 168回答 3
3回答

largeQ

尽管您没有指定它,但我认为您的文件将有多行,每行都与您的描述匹配,如下所示:00 01200000 0111111111 (etc.)因此,您需要读取每一行,使用它来解析它.Split并查找您想要的值。如果您只需要执行一次,最好是在阅读后立即检查每一行,使用 StreamReader,如示例所示:using System;using System.IO;class Test{    public static void Main()    {        char[] delimiterChars = { ' ', ',', '.', ':', '\t' };        using (StreamReader sr = new StreamReader(@"d:\temp\TestFile.txt"))        {            string line = sr.ReadLine();            string[] words = line.Split(delimiterChars);            if (words[0] == "00")            {                Console.WriteLine($"Found it, yay!  words[0]={words[0]}, words[1]={words[1]}");            }        }    }}如果您想多次搜索,您可以将拆分的单词放入某些数据结构(可能是 a)中,Dictionary而不是搜索,然后根据需要多次搜索。

梵蒂冈之花

对于您的问题1:如何找到特定值(如布尔搜索)您必须检查该单词是否属于特定类型。例如:// Checks if word is of number (change it as per your requirement) if (int.TryParse (words[i], out int _) && int.TryParse (words[i+1], out int _)) { ...Statements... }对于你的问题2:如何将相应的值返回到它自己的字符串您已经从文件中获取了字符串形式的数据。因此,请根据需要进行存储和处理。

森林海

像这样?:&nbsp;char[] delimiterChars = { ' ', ',', '.', ':', '\t' };&nbsp; &nbsp; &nbsp; &nbsp; string text = "one\ttwo three:four,five six seven";&nbsp; &nbsp; &nbsp; &nbsp; string[] words =&nbsp; text.Split(delimiterChars);&nbsp; &nbsp; &nbsp; &nbsp; List<string> values = new List<string>();&nbsp; &nbsp; &nbsp; &nbsp; for (int i = 0; i < words.Length; i+=2)&nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(words.Length > i)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (words[i].Length >= 2 && words[i].Length <= 12) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (words[i+1].Length >= 4 && words[i+1].Length <= 12)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; values.Add(words[i+1]);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }我真的不确定我是否完全理解你的问题:P(如果我觉得不对,请发表评论,我会再次删除答案)
打开App,查看更多内容
随时随地看视频慕课网APP