Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работаю со строками. Поиск подстроки. C#

15K
21 февраля 2009 года
-LD-
28 / / 14.03.2007
Привет всем.

У меня есть файл следующего содержания:
Цитата:

1
00:00:45,278 --> 00:00:48,213
Why are you late?
You're not going to
like the answer.

2
00:00:48,281 --> 00:00:50,647
I already know the answer.
I missed the bus.

3
00:00:50,717 --> 00:00:53,652
I don't doubt it.
No bus stops near Brad's.



Я хочу его отпарсить следующим образом: убрать пустую строку перед цифрами 2 и 3.

Вот как я рассуждаю: раз там пустая строка, значит там стоят два символа "CR" и "LF", что значит "перевод каретки" и "переход на новую строку". В C# это пара символов "\r\n". Но когда я пишу следующий код:

 
Код:
while (Reader.Peek() > 0)
                {
                    line = Reader.ReadLine();
                    if (line.StartsWith ("\n\r")==false)
                    {

                        richTextBox1.AppendText(line);
                        richTextBox1.AppendText("\n");
                    }
                }


ничего не выходит. Метод StartsWith (S) возвращает true если текущая строка начинается со строки S.

В чем дело?
Как убрать пустую строку?
255
21 февраля 2009 года
Dart Bobr
1.4K / / 09.04.2004
Читайте документацию по файлам. Если вы хотите обрабатывать управляющие символы, то вам нужно открыть файл как нетипизированый, а вы его открываете как текстовый. При обработке текстового фала, управляющие символы игнорируются.
5
23 февраля 2009 года
hardcase
4.5K / / 09.08.2005
Я бы через регулярные выражения сделал.
Вот пример:
Код:
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;

namespace ConsoleApplication17 {
    class Program {

        static Regex regex = new Regex(@"\d+(\n|\r\n)\d{2}:\d{2}:\d{2},\d+\040*-->\040*\d{2}:\d{2}:\d{2},\d+(\n|\r\n)([a-z0-9_\040'\?\!\.]+(\n|\r\n))*[a-z0-9_\040'\?\!\.]+",
            RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.IgnoreCase);

        const string test_input =
            @"1
00:00:45,278 --> 00:00:48,213
Why are you late?
You're not going to
like the answer.

2
00:00:48,281 --> 00:00:50,647
I already know the answer.
I missed the bus.

3
00:00:50,717 --> 00:00:53,652
I don't doubt it.
No bus stops near Brad's. ";

        static void Main(string[] args) {
            foreach (Match m in regex.Matches(test_input)) {
                Console.WriteLine(m.Value);
            }
            Console.ReadLine();
        }
    }
}

Конечно, нужно тестировать. :)
341
23 февраля 2009 года
Der Meister
874 / / 21.12.2007
[QUOTE=-LD-]Как убрать пустую строку?[/QUOTE]Простите, а
 
Код:
if (line.Length > 0)
{
    richTextBox1.AppendText(line);
    richTextBox1.AppendText("\n");
}
?
Хотя понимаю, что после регулярок - уже не то... :D
15K
23 февраля 2009 года
-LD-
28 / / 14.03.2007
Цитата: Der Meister
Простите, а
 
Код:
if (line.Length > 0)
{
    richTextBox1.AppendText(line);
    richTextBox1.AppendText("\n");
}
?
Хотя понимаю, что после регулярок - уже не то... :D



Собсна так и сделал тогда=)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог