Как получить конкретную строку из строки в C #? - PullRequest
8 голосов
/ 09 апреля 2010

У меня есть строка в C #, и я хотел бы получить текст из конкретной строки, скажем, 65. И если в файле не так много строк, я бы хотел получить "". Как это сделать?

Ответы [ 7 ]

17 голосов
/ 09 апреля 2010

Быстро и просто, при условии, что \ r \ n или \ n - ваша новая строка

string GetLine(string text, int lineNo)
{
  string[] lines = text.Replace("\r","").Split('\n');
  return lines.Length >= lineNo ? lines[lineNo-1] : null;
}
6 голосов
/ 09 апреля 2010
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;
}
4 голосов
/ 09 апреля 2010

Вы можете использовать System.IO.StringReader над строкой. Тогда вы можете использовать ReadLine() до тех пор, пока не достигнете нужной вам строки или не закончится строка.

Поскольку все строки могут иметь разную длину, нет быстрого доступа к строке 65.

Когда вы Split() строка, вы дублируете ее, что также удваивает потребление памяти.

2 голосов
/ 09 апреля 2010

Что вы можете сделать, это разбить строку на основе символа новой строки.

string[] strLines = yourString.split(Environment.NewLine);
if(strLines.Length > lineNumber)
{
    return strLines[lineNumber];
}
2 голосов
/ 09 апреля 2010

Если у вас уже есть экземпляр строки, вы можете использовать String.Split, чтобы разбить каждую строку и проверить, доступна ли строка 65, и если это так, используйте ее.

Если содержимое находится в файле, используйте File.ReadAllLines, чтобы получить массив строк, а затем выполните ту же проверку, что и ранее. Это будет хорошо работать для маленьких файлов, если ваш файл большой, подумайте о чтении по одной строке за раз.

using (var reader = new StreamReader(File.OpenRead("example.txt")))
{
    reader.ReadLine();
}
0 голосов
/ 09 апреля 2010

theString. Split ( "\ п" .ToCharArray ()) [64]

0 голосов
/ 09 апреля 2010

Кроме использования определенной файловой структуры и файловых операций более низкого уровня, я не думаю, что есть более быстрый способ, чем прочитать 64 строки, отбросить их, а затем прочитать 65-ю строку и сохранить ее. На каждом шаге вы можете легко проверить, прочитали ли вы весь файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...