删除字符串中指定单词之间的重复句子

时间:2014-11-10 15:19:48

标签: c# string duplicate-detection

这是我的一些字符串示例:

  
      
  1. 消息:这是消息2.消息:这是消息3.消息:这是我想只在结果中看到的消息
  2.   

根据这个例子,我想得到结果:

  

这是我想只在结果中看到的消息

我的字符串中可能有多个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

3 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:1)

从这个简单的正则表达式开始,您将获得结果。

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

答案 2 :(得分: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;

谢谢你们的支持!!!