用一个句子替换多个字符串

时间:2013-07-22 14:39:44

标签: c# asp.net

使用ASP.Net和C#,如何用一个字符串替换多个字符串?

在我的代码中,我使用此循环来获取结果,但最后一个参数是唯一填充的参数。

    public void smssend(string CustomerName,string from,string to,string date,string time)
    {
        con.Open();

        string str1 = "select * from Master ";
        SqlCommand command1 = new SqlCommand(str1, con);
        SqlDataReader reader1 = command1.ExecuteReader();
        while (reader1.Read())
        {
            Label1.Text = reader1["Template"].ToString();

        }
        reader1.Close();
        string desc = Label1.Text;
        string[] BadCharacters = { "1", "2", "3", "4","5" };
        string[] GoodCharacters = { CustomerName, from, to, date,time };
        string strReplaced = "";

        int i;
        for(i=0; i<=4; i++)
        {
            strReplaced = desc.Replace(BadCharacters[i], GoodCharacters[i]);

        }
        Label1.Text = strReplaced;

输出:

1 and 2 and 3 and 4 and 12:00:00

如何正确连接多个字符串?

5 个答案:

答案 0 :(得分:5)

您在每次循环运行中覆盖strReplaced。看起来你想要这个:

    for(i=0; i<=4; i++)
    {
        desc = desc.Replace(BadCharacters[i], GoodCharacters[i]);
    }
    Label1.Text = desc;

答案 1 :(得分:2)

尝试将每次替换的结果分配给strReplaced

string strReplaced = desc;

int i;
for(i=0; i<=4; i++)
{
    strReplaced = strReplaced.Replace(BadCharacters[i], GoodCharacters[i]);
}
Label1.Text = strReplaced;

答案 2 :(得分:1)

int i;
for(i=0; i<=4; i++)
{
   strReplaced = **desc**.Replace(BadCharacters[i], GoodCharacters[i]);
}

替换为:

int i;
var strReplaced  = desc;
for(i=0; i<=4; i++)
{
  strReplaced = **strReplaced**.Replace(BadCharacters[i], GoodCharacters[i]);
}

答案 3 :(得分:0)

其余答案中的代码很好,但只是一个注释。如果您使用for循环替换一个字符串中的所有内容,那么当您使用日期覆盖BadCharacter值时,之后的迭代可能会使用时间变量中的GoodCharacter值替换日期中的数字。为了解决这个问题,我建议将BadCharacter数组的值更改为更独特的值,这样就不会有覆盖好值的风险。

答案 4 :(得分:0)

String.Join会成为你想要的东西吗?它允许您使用指定的分隔符连接多个字符串。