我正在开发一个SMS软件,我想给客户选择定义他们自己的短信。
我给他们一个文本框来编写自己的短信,其中可以包含数据库字段名称
喜欢
尊敬的客户+ CustName
+感谢您访问此处,您的账单金额为:+ BillTotal
+
CustName和BillTotal是数据库字段名称,客户添加我要显示的所有其他字段名称。
我想从字符串中获取字段名称并填写其值并向客户发送短信。
答案 0 :(得分:0)
只需你可以实现这个目标
string message = string.format("Dear Customer {0} Thank you for visiting Here, Your Bill Amount is : {1}.", txtCustomerName.Text, txtBillAmt.Text);
如果这些值是变量的,那么你可以这样做 -
string message = string.format("Dear Customer {0} Thank you for visiting Here, Your Bill Amount is : {1}.", customerName, billAmt);
希望这对你有用..!
答案 1 :(得分:0)
首先,您可以使用String.Split
方法
string customerText =
"Dear Customer +CustName+ Thank you for visiting Here, Your Bill Amount is : +BillTotal+";
string[] splitResult = text.Split('+');
StringBuilder finalText = New StringBuilder();
for (int i = 0; i < splitResult.Count; i++)
{
string originText = splitresult[i];
if(i % 2 == 0)
finalText.Append(originText)
else // odd index - keyword to replace
finalText.Append(YourMethodToGetValueFromDatabaseByKey(origintext));
}
Console.WriteLine(finalText.ToString()); //Print result
当然,您需要建议客户不要在正常文本中使用'+'
字符。或者为此目的使用其他一些“罕见”角色。
另一种方法可以使用Regex,我在答案中跳过,因为它不是很好
答案 2 :(得分:0)
要创建SMS字符串,请将Kewords包含在某些分隔符中。我在这里以{...}
为例。因此,每当用户点击任何关键字按钮时,您都会在分隔符中插入该关键字。
e.g。
Dear {CustName}, Thank you for visiting Here. Your Bill Amount is : {BillTotal}
接下来,您需要有关键字及其相应值的字典。让我们称之为KeywordLookup
。
假设KeywordLookup
字典已经填充并且具有用户可以插入SMS的所有值,以下函数将从用户创建的SMS模板中获取最终的SMS:
string getFinalSMSString(string smsTemplate)
{
string result = smsTemplate;
foreach (Match m in Regex.Matches(smsTemplate, @"{(\w+\s*\w*?)}"))
{
string keyword = m.Groups[1].Value;
if (KeywordLookup.ContainsKey(keyword))
{
result = result.Replace(m.Value, KeywordLookup[keyword]);
}
}
return result;
}
演示用法:
假设您在表单上有一个Button(button1):
//-- declared at form level
private Dictionary<string, string> KeywordLookup;
private void Form1_Load(object sender, EventArgs e)
{
//-- ensure that you have all the keywords & values in the dictionary before calling this method.
KeywordLookup = new Dictionary<string, string>();
KeywordLookup.Add("CustName", "Pradeep");
KeywordLookup.Add("BillTotal", "$100.00");
}
private void button1_Click(object sender, EventArgs e)
{
//-- demo usage
var s = "Dear {CustName}, Thank you for visiting Here. Your Bill Amount is : {BillTotal}";
MessageBox.Show(getFinalSMSString(s));
}