2011-12-27 3 views
4

интересно, если я могу написать регулярное выражение, чтобы сделать ниже, в настоящее время с помощью String.Remove (17,7)Regex для удаления строки из строки

string txt = "werfds_tyer.abc.zip.ytu_20111223170226_20111222.20111222"; 

Я хочу удалить .zip.ytu из выше строк

ответ

9

Просто используйте String.Replace()

String.Replace(".zip.ytu", ""); 

Вам не нужно регулярное выражение для точного соответствия.

+0

LOL ... простота камней :) – user570715

3
txt = txt.Replace(".zip.ytu", ""); 

Почему бы вам просто не сделать выше?

2

использование string.replace:

txt = txt.Replace(".zip.ytu", ""); 
4

Вот ответ, используя регулярные выражения, как спросил OP. ;-)

Чтобы использовать регулярное выражение, поместить текст Replacment в матче(), а затем заменить этот матч ничего (String.Empty):

string text = @"werfds_tyer.abc.zip.ytu_20111223170226_20111222.20111222"; 
string pattern = @"(\.zip\.ytu)"; 

Console.WriteLine(Regex.Replace(text, pattern, string.Empty)); 

// Outputs 
// werfds_tyer.abc_20111223170226_20111222.20111222 

НТН

2

не знаю что такое «.zip.ytu», но если вам не нужны точные совпадения, вы можете использовать что-то вроде этого:

string txt = "werfds_tyer.abc.zip.ytu_20111223170226_20111222.20111222"; 

Regex mRegex = new Regex(@"^([^.]*\.[^.]*)\.[^.]*\.[^_]*(_.*)$"); 
Match mMatch = mRegex.Match(txt); 

string new_txt = mRegex.Replace(txt, mMatch.Groups[1].ToString() + mMatch.Groups[2].ToString()); 
+0

[^.] * (От нуля до неограниченного) не периода. Зачем убивать парсер регулярных выражений с помощью «*», в частности, когда условие нуля действительно? Вместо этого использование выражения «+» -1 для многих обеспечило бы лучший намек, а не отслеживание обратного пути. Вы действительно верите, что за этим не последует ничего; или вы считаете, что будет существовать как минимум 1 персонаж? Если вы считаете, что 1 символ будет существовать, используйте его, а не *. HTH – OmegaMan

+0

Я написал, что я действительно не знаю, что такое «.zip.ytu», и, ну, я не знаю, что такое целая строка. Итак, я могу признать, что эта строка может быть чем-то вроде «..test1.test2_123123.123123», из-за чего нет? Если я действительно знаю, что между этими точками всегда должно быть что-то, тогда, конечно, я бы использовал «+» вместо «*». Что не так? –

0

Вот метод я использую для более сложных repaces. Проверьте ссылку: http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.replace(v=vs.110).aspx для регулярного выражения. Я добавил код ниже.

string input = "This is text with far too much " + 
       "whitespace."; 
    string pattern = "\\s+"; 
    string replacement = " "; 
    Regex rgx = new Regex(pattern); 
    string result = rgx.Replace(input, replacement); 

    Console.WriteLine("Original String: {0}", input); 
    Console.WriteLine("Replacement String: {0}", result);        
Смежные вопросы