Ravi Kumar
Ravi Kumar

Reputation: 11

How to replace a string in between special characters with in DataTable C#

How to replace string with values, which is in between special characters and should match back with column name and msgtemplate filed name . I tried below. but it it repeating same msg values.

DataTable dtResponsesOUTBOX = objDataAccess.getoutbox();
dtResponsesOUTBOX.Columns.Add("NewmsgTemplate", typeof(System.String));
DataTable dtrecords = dtResponsesOUTBOX.Copy();
foreach (DataRow row1 in dtResponsesOUTBOX.Rows)
{
  string Item = dtResponsesOUTBOX.Rows[2]["Item"].ToString().Trim();
  string trandate = dtResponsesOUTBOX.Rows[3]["trndate"].ToString().Trim();
  string result = Regex.Replace(strValue, "@@Item.*?@@", Item);
  result = Regex.Replace(result, "@@trndate.*?@@", trandate);
  row1["NewmsgTemplate"] = result;
}
dtrecords = dtResponsesOUTBOX.Copy();

input : Item deleiverdate msgTemplate
laptop 12/2/2020 Your @@item@@ is deliver at @@deleverdate@@
books 10/2/2020 Your @@item@@is deliver at @@deleverdate@@,
Abc 10/2/2020 Your @@item@@is deliver at @@deleverdate@@,


Expected output :

NewmsgTemplateColumn Thank you Your laptop is deliver at 12/02/2020 Thank you Your books is deliver at 10/02/2020 Thank you Your ABC is deliver at 10/02/2020

Upvotes: 1

Views: 512

Answers (1)

Verizz
Verizz

Reputation: 73

Your problem didn't describe clearly so that I guess you wanna get the table below.

Item   | deleiverdate  |  msgTemplate                                   |  NewmsgTemplate
laptop |  12/2/2020    |  Your @@item@@ is deliver at @@deleverdate@@   |  Thank you Your laptop is deliver at 12/2/2020
books  |  10/2/2020    |  Your @@item@@ is deliver at @@deleverdate@@   |  Thank you Your books is deliver at 10/2/2020
Abc    |  10/2/2020    |  Your @@item@@ is deliver at @@deleverdate@@   |  Thank you Your Abc is deliver at 10/2/2020

And I tried to realize it from your codes:

string msgTemplate = "Your @@item@@ is deliver at @@deleverdate@@";

DataTable dtResponsesOUTBOX = new DataTable();
dtResponsesOUTBOX.Columns.Add("Item", typeof(System.String));
dtResponsesOUTBOX.Columns.Add("deleiverdate", typeof(System.String));
dtResponsesOUTBOX.Columns.Add("NewmsgTemplate", typeof(System.String));

dtResponsesOUTBOX.Rows.Add("laptop", "12/2/2020");
dtResponsesOUTBOX.Rows.Add("books", "10/2/2020");
dtResponsesOUTBOX.Rows.Add("Abc", "10/2/2020");

foreach (DataRow row1 in dtResponsesOUTBOX.Rows)
{
    string Item = row1["Item"].ToString();
    string deleiverdate = row1["deleiverdate"].ToString();
    string newmsg = Regex.Replace(msgTemplate, "@@item@@", Item);
    newmsg = Regex.Replace(newmsg, "@@deleverdate@@", deleiverdate);
    row1["NewmsgTemplate"] = newmsg;
    Console.WriteLine("Thank you " + row1["NewmsgTemplate"]);
}

There will be the output below:

Thank you Your laptop is deliver at 12/2/2020
Thank you Your books is deliver at 10/2/2020
Thank you Your Abc is deliver at 10/2/2020

Upvotes: 1

Related Questions