I have a string with a message containing some fields I want to swap out to actual values 

```
var message = "Hi [CustomerName]. Its [TODAY], nice to see you were born on the [DOB]!";
var mappingCodes = new List<string> {"[CUSTOMER_NAME]","[DOB]",[TODAY]};
var customEmails = new Dictionary<string, string>();
var today = DateTime.Now;
var customers = new List<Customer>()
{
    new Customer()
        {
            FirstName = "Jo",
            LastName = "Bloggs",
            Email = "jo@bloggs.com",
            DOB = "10/12/1960"
        }
};
foreach (var customer in customers)
{
    var emailMessage = "";
    customEmails.Add(customer.Email,emailMessage);
}

```

What I'm trying to do is loop through each of the customers and take the message replacing any of the mappingCodes with actual codes.

e.g. [Today] Would be the today and `CustomerName` would be `Customer.FirstName + Customer.LastName`

There could be 1000's of customers so I need something robust. I'm just not sure how to first check the string contains any of the `mappingCodes` and then replace them with the desired values.

Any advice?