亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我正在嘗試讀取 txt 文件并讀取第一列以獲取第二列

我正在嘗試讀取 txt 文件并讀取第一列以獲取第二列

C#
紅糖糍粑 2023-09-24 17:04:53
我有一個 txt 文件,它有兩個不同的值,所有數字,其中第一列的長度為 00 到 0000000 (長度為 2 到 12),第二列的長度為 0120 到 0111111111 (長度為 4 到 12) )。我的問題有很多:如何查找特定值(如布爾搜索)如何將對應的值返回到自己的字符串中我嘗試過但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 值字符串(使用除單詞字符串之外的這部分的數學術語)。
查看完整描述

3 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

盡管您沒有指定它,但我認為您的文件將有多行,每行都與您的描述匹配,如下所示:


00 0120

0000 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而不是搜索,然后根據需要多次搜索。


查看完整回答
反對 回復 2023-09-24
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

對于您的問題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:如何將相應的值返回到它自己的字符串

您已經從文件中獲取了字符串形式的數據。因此,請根據需要進行存儲和處理。


查看完整回答
反對 回復 2023-09-24
?
森林海

TA貢獻2011條經驗 獲得超2個贊

像這樣?:


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

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


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

        List<string> values = new List<string>();

        for (int i = 0; i < words.Length; i+=2)

        {

            if(words.Length > i)

            if (words[i].Length >= 2 && words[i].Length <= 12) {

                if (words[i+1].Length >= 4 && words[i+1].Length <= 12)

                {

                    values.Add(words[i+1]);

                }

            }

        }

我真的不確定我是否完全理解你的問題:P


(如果我覺得不對,請發表評論,我會再次刪除答案)


查看完整回答
反對 回復 2023-09-24
  • 3 回答
  • 0 關注
  • 212 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號