2014-11-10 4 views
-3

Это мой пример некоторой строки:удалить повторяющиеся фразы между определенными словами из строки

  1. сообщение: это какое-то сообщение 2. сообщение: это какое-то сообщение 3. сообщение: это сообщение, которое я хотят видеть только в результатах

согласно этому примеру, я хотел бы получить результат:

Это сообщение, которое я хочу видеть только в результатах

может быть несколько x. message: предложений в моей строке.

Я хочу, чтобы удалить эти сообщения, которые дублировали

любая идея?

ДОБАВЛЕНО:

Мой вопрос касается некоторых отчетов продажи инструмента и печати. Код я работает теперь выглядит следующим образом:

private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { 
    string a = xtraReport1.GetCurrentColumnValue("Paczka_Notatki").ToString(); 
    xrTableCell3.Text = a; 
} 

, когда я изменить его на:

private void OnBeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { 
    var str = xtraReport1.GetCurrentColumnValue("Paczka_Notatki").ToString(); 
    foreach (var message in Regex.Split(str, @"\d+\. message: ") 
     .GroupBy(m => m) 
     .Where(m => m.Count() == 1 && m.Key != string.Empty) 
     .Select(m => new { message = m.Key })) 
     { 
      xrTableCell3.Text = message.message; 
     } 
} 

тогда у меня много ошибок, как: error-en

+4

Также добавьте свой ожидаемый результат, и ваш подход пока подходит. – Shaharyar

+0

Я провел некоторое исследование, и моя среда Net.Framework 2.0, которая не поддерживает используемую здесь технологию под названием «LINQ» – maniootek

ответ

0
String text = xtraReport1.GetCurrentColumnValue("Paczka_Notatki").ToString(); 

    string finalNote = ""; 
    string[] notes = System.Text.RegularExpressions.Regex.Split(text, @"\d{1,}\.\smessage:(?<Message>[\D\s]+)"); 

    foreach (string note in notes) 
    { 
     if (!String.IsNullOrEmpty(note) && finalNote.IndexOf(note) == -1) 
     finalNote += note; 
     } 
    xrTableCell3.Text = finalNote; 

спасибо ребята за поддержку !!!

1

Начните с этого простого регулярного выражения и вы получите свой результат.

\d{1,}\.\smessage:\s(?<Message>[\D\s]+) 
2

Один из способов:

foreach (var message in Regex.Split(str, @"\d+\. message: ") 
    .GroupBy(m => m) 
    .Where(m => m.Count() == 1 && m.Key != string.Empty) 
    .Select(m => new { message = m.Key })) 
{ 

    Console.WriteLine(message.message); 
} 
+0

где переменная исходной строки? «сообщение» или «str»? – maniootek

+0

Его в переменной 'str' –

+0

вы уверены, что это в C#? можете ли вы сделать некоторые онлайн-примеры этого кода? – maniootek

Смежные вопросы