繁体   English   中英

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

[英]Regex modify connection string

可以说我在C#中有此SQL Server连接字符串:

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

我想删除字符串的Driver =部分,无论它出现在字符串的何处。 这样一来,它看起来像这样:

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

我已经尝试正则表达式一段时间了,但是没有运气。

您正在寻找OdbcConnectionStringBuilder类,它将为您解析该类。

您可以这样做:

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

为您的字符串产生

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

ideone上的演示。

您可以使用此:

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

可能无法正常运行,但希望您能明白:

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

附带说明一下,我发现有四种完全不同的解决方案非常令人惊奇;)

为了扩展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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM