假设我在C#中有这个SQL Server连接字符串:
Driver={SQL Server};server=.\sqlexpress;uid=myid;pwd=password;
我想删除字符串的Driver =部分,无论它出现在字符串中的哪个位置。所以事后看起来像这样:
server=.\sqlexpress;uid=myid;pwd=password;
我一直在尝试使用正则表达式而没有运气。
答案 0 :(得分:2)
您正在寻找OdbcConnectionStringBuilder
类,它将为您解析此问题。
答案 1 :(得分:2)
你可以这样做:
res = Regex.Replace(connStr, "Driver=[{][^}]*[}];", "");
对于你的字符串,它会产生
server=.\sqlexpress;uid=myid;pwd=password;
答案 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);
}