如何从C#中的其他字符串中获取字符串名称

时间:2016-03-25 06:46:12

标签: c# winforms desktop-application

我正在开发一个SMS软件,我想给客户选择定义他们自己的短信。

我给他们一个文本框来编写自己的短信,其中可以包含数据库字段名称 喜欢 尊敬的客户+ CustName +感谢您访问此处,您的账单金额为:+ BillTotal + CustName和BillTotal是数据库字段名称,客户添加我要显示的所有其他字段名称。

我想从字符串中获取字段名称并填写其值并向客户发送短信。

3 个答案:

答案 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));
}