我在C#中有一个字符串,并希望从特定行获取文本,例如65.如果文件没有那么多行,我想得到“”。怎么做?
答案 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]