如何替换部分连接字符串?

时间:2014-08-12 20:48:36

标签: c# string connection-string

我使用c#,我需要用其他数据替换字符串。 这是字符串,服务器名称,user1和380kj数据和长度可以更改。

"Data Source=servername;User ID=user1;Password=380kj"

我想要这个结果:

"Data Source=servername;User ID=XXXXX;Password=XXXXX"

我在用户名和密码上做了一个IndexOf,但我不知道如何获得使用删除功能的确切计数,以便我可以将XXXXX插入字符串。

   int index = SaleDatabase.ConnectionString.IndexOf("User ID=");
   int index2 = SaleDatabase.ConnectionString.IndexOf(";Password");

我该怎么办?

感谢...

4 个答案:

答案 0 :(得分:16)

您可以使用String.Replace方法,但在您的情况下,您似乎正在编辑数据库连接字符串,在这种情况下,您应该使用特定的ConnectionStringBuilder作为该连接字符串,例如:

string connStr = "Data Source=servername;User ID=user1;Password=380kj";
System.Data.SqlClient.SqlConnectionStringBuilder sb = new System.Data.SqlClient.SqlConnectionStringBuilder(connStr);
sb.UserID = "XXXXX";
sb.Password = "XXXXX";
connStr = sb.ToString();

答案 1 :(得分:2)

为什么不通过使用Split Method by character(“;”)拆分字符串。结果将是数组。然后你可以使用简单的linq或foreach循环从结果数组中获取值

答案 2 :(得分:2)

你绝对应该在这个特定情况下使用ConnectionStringBuilder作为@ M.A。哈姆建议。但为了完整起见,您还可以使用简单的Regex.Replace执行此类操作。类似的东西:

    Regex r = new Regex(@"User ID=[^;]*");
    String newString = r.Replace(s,"User ID=XXXX");

将查找以User ID=开头的文字并捕获所有字符,直到下一个;(注意:如果用户ID包含;这会破坏 - 但它可能会破坏无论如何,将需要逃脱)。然后我们只用我们的新字符串替换匹配的字符串。

Password=做同样的事情留给读者练习。

答案 3 :(得分:2)

只需使用string.Format并为示例生成新的string

public static string GenerateConnectionString(string dataSource, string user, string password)
{
   return string.Format("Data Source={0};User ID={1};Password={2}", dataSource, user, password);
}

有些解决方案非常简单。详细了解KISS