简体   繁体   中英

How to search text based on line number in string

I have a function which searching a text in a string and returning me the line which contains the specific substring.Here is the function..

private static string getLine(string text,string text2Search)
{
    string currentLine;
    using (var reader = new StringReader(text)) 
    {
        while ((currentLine= reader.ReadLine()) != null) 
        {
            if (currentLine.Contains(text2Search,StringComparison.OrdinalIgnoreCase))
            {
                break;
            }
        }
    }
    return currentLine;
}

Now in my condition i have to start searching the lines after a particular line suppose here its 10.Means have to start searching the string for specific text after 10 line.So my query is how can i add this into my current function.. Please help me.

You can use File.ReadLines method with Skip :

var line = File.ReadLines("path").Skip(10)
.SkipWhile(line => !line.Contains(text2Search,StringComparison.OrdinalIgnoreCase))
.First();

You can introduce a counter into your current code as so:

private static string getLine(string text,string text2Search)
{
    string currentLine;
    int endPoint = 10;
    using (var reader = new StringReader(text)) 
    {
        int lineCount = 0;
        while ((currentLine= reader.ReadLine()) != null) 
        {
            if (lineCount++ >= endPoint && 
                currentLine.Contains(text2Search,StringComparison.OrdinalIgnoreCase))
            {
                return currentLine;
            }
        }
    }
    return string.Empty;
}

Alternatively, use your current code to add all lines to a list in which you will then be able to use Selmans answer.

String.Contains doesn't have an overload taking StringComparison.OrdinalIgnoreCase

var match = text.Split(new char[]{'\n','\r'})
            .Skip(10)
            .FirstOrDefault(line=>line.IndexOf("", StringComparison.OrdinalIgnoreCase)>=0);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM