anabeth4 Ответов: 3

Где поставить условия регулярных выражений при потоковом написании C#


Я хочу добавить новое регулярное выражение в свой код, который печатает из списка (с помощью streamreader).
Где добавить регулярное выражение, которое удаляет эти символы( - : _ |) из файла и регулярное выражение для добавления заголовка в файл.

регулярное выражение замены char: line.Заменить(@"- : _ |", строка.Пустой);

регулярное выражение для добавления заголовка:

using (StreamWriter file = new StreamWriter(fs))                    
{
    file.WriteLine( "Number,User,Function,Message"); 

    for (int index = 0; index < pr.Length; index++)
    {
      
        file.WriteLine("{0},\"{1}\",{2},{3}",
           pr[s].Number, pr[s].User,
           pr[s].Function, pr[s].Message; 
    }
}


Что я уже пробовал:

using (StreamWriter writer = new StreamWriter(path2))
            {
                foreach (string l in inactive)
                {

           //line.Replace(@"- : _ |", string.Empty); 
                    writer.WriteLine(l);
}
}

Richard MacCutchan

Что плохого в использовании string.Replace метод?

anabeth4

я пытался, но это не удаляет символы

3 Ответов

Рейтинг:
6

phil.o

Вы не можете использовать строку.Замените этот способ (используя глобальную строку); вы должны использовать строку.Замените для каждого заменяемого символа.
Пример:

l = l.Replace("-", "").Replace(":", "").Replace("_", "").Replace("|", "");

Записи:
- строка.Replace не переходит к редактированию переменной на месте, вы должны снова привести результат метода к переменной (l = ...).
- Вы можете связать вызовы с методом Replace.
- В блоке кода, который вы показали, в комментируемой строке вы, кажется, используете line который не соответствует l переменная, определенная в вашем цикле foreach.
Есть и другие варианты сделать то же самое, например, используя регулярные выражения, но я думаю, что некоторые указания уже были даны вам на эту тему в некоторых других постах.
Надеюсь, это поможет. Любезно.


Рейтинг:
1

Patrice T

Вы должны попытаться заменить его

@"- : _ |"

с
@"[- : _ |]"


Всего лишь несколько интересных ссылок, которые помогут построить и отладить регулярное выражение.
Вот ссылка на документацию по регулярным выражениям:
perlre - perldoc.perl.org[^]
Вот ссылки на инструменты, помогающие создавать регулярные выражения и отлаживать их:
.Объем тестер регулярное выражение - регулярное выражение шторм[^]
Регулярное Средство Выражения Эспрессо [^]
RegExr: Learn, Build, & Test RegEx[^]
Этот пример показывает вам регулярное выражение в виде красивого графика, который действительно полезен для понимания того, что делает регулярное выражение:
Debuggex: онлайн-тестер визуальных регулярных выражений. JavaScript, Python и PCRE.[^]


Рейтинг:
0

OriginalGriff

Цитата:
я хочу удалить а не заменить эти символы

Именно это и делает замена их пустой строкой - она удаляет символы.
Если вы хотите удалить все эти символы независимо от того, где rgey появляются, ratehr, чем как одна строка, у вас есть неправильное регулярное выражение.
Ваше регулярное выражение изменит это
Hello -:_|There!
До настоящего времени:
Hello There!
Но оставим это без изменений:
Hello -:There!_|

Если вы хотите удалить все экземпляры любого из символов, вам понадобится это регулярное выражение:
[-:_|]+


Получить копию Экспрессо[^] - это бесплатно, и он проверяет и генерирует регулярные выражения.

Но этот код очень похож на код, используемый членом, который начинает становиться скорее помощником вампира / Тролля, потому что он отказывается чему-либо учиться и думать самостоятельно ... Я чувствую запах носочной куклы...


anabeth4

может быть, у разных людей одно и то же hw? эта страница должна была помочь другим не иронизировать ;)
спасибо!