【问题标题】:How skip to next line using StreamReader after founding the value that I was looking for?找到我正在寻找的值后,如何使用 StreamReader 跳到下一行?
【发布时间】:2021-09-17 15:03:07
【问题描述】:

我在一个项目中工作,我正在从 .txt 文件中读取值,以检查我从数据库中获取的数据是否具有至少一个等于 .txt 文件的值。

例子:

.txt 文件内容

22, 23, 24, 25

.txt 文件中的“23”应该有 4 个来自数据库的结果,我想要做的是在找到是否有 1 个结果之后转到下一行,在这种情况下为 23。

我尝试创建一个带有 bool 的模型来比较是否已添加但仍无法正常工作,添加到哈希集但没有结果。

这是我目前所拥有的:

private void Fetch()
    {

        List <CList> itemList = new List<CList>();

        using (StreamReader sr = new StreamReader("numberOfItems.txt"))
        {
            string line;

            while ((line = sr.ReadLine()) != null)
            {
                string[] itemsC = line.Split(",");                    

             //Logic here: check if itemC has one result from container, skip to the next line in numberOfItems.txt

                
            }
        }
    }

【问题讨论】:

  • 你的.txt文件真的不止一行吗?看来你真的只有一行逗号分隔的值。您需要迭代您的 itemsC 数组。如果我没看错的话。你的确切问题不是很清楚。
  • @ScottWelker 我的 .txt 有 10 行,我想检查从 .txt 获取的值是否等于数据库中的数据 ill 添加到列表并转到下一行,不添加不止一项。
  • 如果你的文件只有 10 行,老实说,跳过StreamReader 并使用File.ReadAllLines 将整个文件放入string[]。然后跳过一行就像读取数组中的下一个元素一样简单。
  • continue 声明似乎是您问题的答案,但我认为这不是您要问的。
  • StreamReader 上使用ReadLine 时,阅读器从当前位置开始阅读,直到看到行尾,然后将文本行作为字符串交还。行可能很长,也可能是空的,所以没有“跳到下一行”的魔法。您想要做的是,如果您决定跳过下一行,则设置一个标记为ignoreNextLine。设置标志后,您读取下一行但不处理它(您所做的唯一处理是清除ignoreNextLine 标志)。

标签: c# azure streamreader


【解决方案1】:

StreamReader 有可能将所有内容都作为字符串读取,因此您可以使用循环忽略所有内容,直到您遇到\n(换行符)字符,或者直接使用System.Linq.Enumerable.SkipWhile() 跳过每个字符,直到你会找到一个 nwline 字符。

【讨论】:

    猜你喜欢
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2016-11-04
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多