0

使用 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

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

4

5 回答 5

5

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

    for(i=0; i<=4; i++)
    {
        desc = desc.Replace(BadCharacters[i], GoodCharacters[i]);
    }
    Label1.Text = desc;
于 2013-07-22T14:42:42.723 回答
2

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

string strReplaced = desc;

int i;
for(i=0; i<=4; i++)
{
    strReplaced = strReplaced.Replace(BadCharacters[i], GoodCharacters[i]);
}
Label1.Text = strReplaced;
于 2013-07-22T14:43:33.807 回答
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]);
}
于 2013-07-22T14:44:55.590 回答
0

String.Join 会是您正在寻找的东西吗?它将允许您使用指定的分隔符连接多个字符串。

于 2013-07-22T15:04:08.603 回答
0

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

于 2013-07-22T14:59:39.200 回答