using System.Collections.Generic;
public static void Main()
var keywords = new Dictionary<string, string> { { "[FROMACCOUNT]", "12345" }, { "[TOACCOUNT]", "1234567" }, { "[OPENKEY]", "open transfer" }, { "[MEMO]", "this is memo" } };
var transferDescrption = "Transfer Operation lorem ipsum dolor from [FROMACCOUNT] to [TOACCOUNT] - [OPENKEY] - with [MEMO]";
transferDescrption = "Transfer Operation lorem from [FROMACCOUNT] to [TOACCOUNT] - [OPENKEY] - with [MEMO]";
var transferDescrptionFinal = ReplaceKeywords(transferDescrption, keywords);
if (transferDescrptionFinal.Length > 60)
var countToRemove = transferDescrptionFinal.Length - 60;
if (keywords["[MEMO]"].Length > countToRemove)
keywords["[MEMO]"] = keywords["[MEMO]"].Substring(0, keywords["[MEMO]"].Length - countToRemove);
transferDescrptionFinal = ReplaceKeywords(transferDescrption, keywords);
countToRemove = countToRemove - keywords["[MEMO]"].Length;
keywords["[MEMO]"] = string.Empty;
if (keywords["[OPENKEY]"].Length > countToRemove)
keywords["[OPENKEY]"] = keywords["[OPENKEY]"].Substring(0, keywords["[OPENKEY]"].Length - countToRemove);
countToRemove = countToRemove - keywords["[OPENKEY]"].Length;
keywords["[OPENKEY]"] = string.Empty;
transferDescrptionFinal = ReplaceKeywords(transferDescrption, keywords);
transferDescrptionFinal = transferDescrptionFinal.Length > 60 ? transferDescrptionFinal.Substring(0, 60) : transferDescrptionFinal;
Console.WriteLine(transferDescrptionFinal);
Console.WriteLine("Length: " + transferDescrptionFinal.Length);
private static string ReplaceKeywords(string configuredValue,Dictionary<string, string> keywords)
var transferDescrptionTemp = configuredValue;
foreach (var item in keywords)
transferDescrptionTemp = transferDescrptionTemp.Replace(item.Key, item.Value);
return transferDescrptionTemp;