Как получить конкретную строку из строки в C#?
У меня есть строка в C# и я хотел бы получить текст из определенной строки, скажем, 65. И если в файле не так много строк, я хотел бы получить "". Как это сделать?
7 ответов
быстро и легко, предполагая, что \r\n или \n-ваша последовательность новой строки
string GetLine(string text, int lineNo)
{
string[] lines = text.Replace("\r","").Split('\n');
return lines.Length >= lineNo ? lines[lineNo-1] : null;
}
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;
}
вы могли бы использовать System.IO.StringReader
над строкой. Тогда вы могли бы использовать ReadLine()
пока вы не пришли к строке, которую вы хотели или не закончились строки.
поскольку все линии могут иметь разную длину, нет ярлыка, чтобы перейти непосредственно к строке 65.
когда вы Split()
строка, которую вы дублируете, что также удвоит потребление памяти.
Если у вас уже есть экземпляр string, вы можете использовать String.Split
разделить каждую строку и проверить, доступна ли строка 65, и если да, используйте ее.
если содержимое находится в файле use File.ReadAllLines
чтобы получить массив строк, а затем сделать ту же проверку, упомянутую ранее. Это будет хорошо работать для небольших файлов, если ваш файл большой рассмотреть чтение одной строки за раз.
using (var reader = new StreamReader(File.OpenRead("example.txt")))
{
reader.ReadLine();
}
что вы можете сделать, это разбить строку на основе строки символов.
string[] strLines = yourString.split(Environment.NewLine);
if(strLines.Length > lineNumber)
{
return strLines[lineNumber];
}
кроме использования определенной файловой структуры и файловых операций более низкого уровня, я не думаю, что есть более быстрый способ, чем прочитать 64 строки, отбросить их, а затем прочитать 65-ю строку и сохранить ее. На каждом шаге вы можете легко проверить, прочитали ли вы весь файл.