C# 使用正则表达式从连接字符串中提取属性
在C# 使用正则表达式从连接字符串中提取属性,c#,regex,C#,Regex,在C#中,我试图从连接字符串中获取数据源和初始目录属性 所以如果我有 metadata=res://*/model.csdl|res://*/model.ssdl|res://*/model.msl;provider=System.Data.SqlClient;provider connection string="data source=myDESKTOP;initial catalog=dbName;integrated security=True;MultipleActiveResultS
C#
中,我试图从连接字符串中获取数据源
和初始目录
属性
所以如果我有
metadata=res://*/model.csdl|res://*/model.ssdl|res://*/model.msl;provider=System.Data.SqlClient;provider connection string="data source=myDESKTOP;initial catalog=dbName;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"
如何仅提取值
myDESKTOP
和dbName
,而不考虑表达式左侧的大小写?您可以剖析实体框架的连接字符串并提取内部基本连接字符串。此时,SqlConnectionStringBuilder可以为您提供组成连接字符串的各个部分
string test = "metadata=res://*/model.csdl|res://*/model.ssdl|res://*/model.msl;provider=System.Data.SqlClient;provider connection string=\"data source = myDESKTOP; initial catalog = dbName; integrated security = True; MultipleActiveResultSets = True; App = EntityFramework";
string con = string.Join("=",
string.Join(";", test.Split(';').Skip(2))
.Split('=').Skip(1)).Trim('"');
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(con);
Console.WriteLine(sb.DataSource);
Console.WriteLine(sb.InitialCatalog);
既然你可以这样做,为什么还要用正则表达式呢