如何在c#中获得字符串中特定文本的行号

本文关键字:文本 字符串 | 更新日期: 2023-09-27 18:17:29

我有一个字符串,其中包含这么多行。现在,根据我的要求,我必须在这个字符串中搜索子字符串(文本),并找出这个子字符串(文本)在字符串中存在的行号。

一旦我将得到行号,我必须读取该行,并了解其中哪些内容是字符,哪些是整数或数字。

这是我用来读取特定行的代码…

private static string ReadLine(string text, int lineNumber)
{
    var reader = new StringReader(text);
    string line;
    int currentLineNumber = 0;
    do
    {
        currentLineNumber += 1;
        line = reader.ReadLine();
    }
    while (line != null && currentLineNumber < lineNumber);
    return (currentLineNumber == lineNumber) ? line : string.Empty;
}

但是如何搜索包含特定文本(子字符串)的行号?

如何在c#中获得字符串中特定文本的行号

我来简化一下。如何获得当前特定文本的行数c#

中的字符串

那么你可以使用这个方法:

public static int GetLineNumber(string text, string lineToFind, StringComparison comparison = StringComparison.CurrentCulture)
{
    int lineNum = 0;
    using (StringReader reader = new StringReader(text))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            lineNum++;
            if(line.Equals(lineToFind, comparison))
                return lineNum;
        }
    }
    return -1;
}

我知道这个问题已经解决了,但我想分享一个解决问题的答案,因为我无法让它适用于简单的事情。代码只返回它找到给定字符串的一部分的行号,要获得准确的行号只需替换"Contains"与"Equals".

public int GetLineNumber(string lineToFind) {        
    int lineNum = 0;
    string line;
    System.IO.StreamReader file = new System.IO.StreamReader("c:''test.txt");
    while ((line = file.ReadLine()) != null) {
        lineNum++;
        if (line.Contains(lineToFind)) {
            return lineNum;
        }
    }
    file.Close();
    return -1;
}