正则表达式修改连接字符串

时间:2014-01-19 14:11:19

标签: c# regex

假设我在C#中有这个SQL Server连接字符串:

Driver={SQL Server};server=.\sqlexpress;uid=myid;pwd=password;

我想删除字符串的Driver =部分,无论它出现在字符串中的哪个位置。所以事后看起来像这样:

server=.\sqlexpress;uid=myid;pwd=password;

我一直在尝试使用正则表达式而没有运气。

5 个答案:

答案 0 :(得分:2)

您正在寻找OdbcConnectionStringBuilder类,它将为您解析此问题。

答案 1 :(得分:2)

你可以这样做:

res = Regex.Replace(connStr, "Driver=[{][^}]*[}];", "");

对于你的字符串,它会产生

server=.\sqlexpress;uid=myid;pwd=password;

Demo on ideone.

答案 2 :(得分:1)

您可以使用:

string pattern = @"\bDriver=[^;]+;";
string replacement = "";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);

答案 3 :(得分:0)

可能无法正常工作,但我希望你明白这一点:

string result = string.Join(";", connectionString
    .Split(';')
    .Where(p => !p.StartsWith('Driver'))

作为旁注,我发现有四种完全不同的解决方案令人惊讶;)

答案 4 :(得分:0)

扩展SLaks给出的答案:

[TestMethod]
public void TestMethod1()
{
    var connStr = "Driver={SQL Server};server=.\\sqlexpress;uid=myid;pwd=password;";
    var builder = new DbConnectionStringBuilder();
    builder.ConnectionString = connStr;
    builder.Remove("Driver");
    connStr = builder.ConnectionString;
    Assert.AreEqual("server=.\\sqlexpress;uid=myid;pwd=password", connStr);
}