如何从C#中的字符串中获取特定行?

时间:2010-04-09 09:43:35

标签: c# string substring

我在C#中有一个字符串,并希望从特定行获取文本,例如65.如果文件没有那么多行,我想得到“”。怎么做?

7 个答案:

答案 0 :(得分:17)

快速简单,假设\ r \ n或\ n是你的换行序列

string GetLine(string text, int lineNo)
{
  string[] lines = text.Replace("\r","").Split('\n');
  return lines.Length >= lineNo ? lines[lineNo-1] : null;
}

答案 1 :(得分:6)

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;
}

答案 2 :(得分:4)

您可以在字符串上使用System.IO.StringReader。然后你可以使用ReadLine(),直到你到达你想要的行或用完字符串。

由于所有线条的长度都不同,因此没有直接跳转到第65行的快捷方式。

当你Split()复制一个字符串时,这也会使内存消耗加倍。

答案 3 :(得分:2)

如果您已经有一个字符串实例,可以使用String.Split拆分每一行并检查第65行是否可用,如果有,请使用它。

如果内容在文件中,请使用File.ReadAllLines获取字符串数组,然后执行前面提到的相同检查。这适用于小文件,如果您的文件很大,请考虑一次读取一行。

using (var reader = new StreamReader(File.OpenRead("example.txt")))
{
    reader.ReadLine();
}

答案 4 :(得分:2)

您可以做的是,根据换行符分割字符串。

string[] strLines = yourString.split(Environment.NewLine);
if(strLines.Length > lineNumber)
{
    return strLines[lineNumber];
}

答案 5 :(得分:0)

除了利用特定的文件结构和较低级别的文件操作之外,我认为没有比读取64行更快的方法,丢弃它们然后读取第65行并保留它。在每一步,您都可以轻松检查是否已阅读整个文件。

答案 6 :(得分:0)

theString。Split( “\ n” 个.ToCharArray())[64]