假设我有一个字符串
metadata=res://*/Mapping.Models.csdl|res://*/Mapping.Models.ssdl|res://*/Mapping.Models.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string="data source=TESTSERVER;password=pass;persist security info=True;user id=id\"
我如何获得如下字符串:
data source=TESTSERVER;password=pass;persist security info=True;user id=id
答案 0 :(得分:6)
如果要解析所提到的字符串,则可以使用EntityConnectionStringBuilder。
有像ProviderConnectionString这样的属性,可以为您提供所需的字符串。
示例强>
var myEntityConnection = @"metadata=res://*/Mapping.Models.csdl|res://*/Mapping.Models.ssdl|res://*/Mapping.Models.msl;provider=Oracle.ManagedDataAccess.Client;provider connectionstring='""data source=TESTSERVER;password=pass;persist security info=True;user id=id";
var builder = new EntityConnectionStringBuilder(myEntityConnection);
Console.WriteLine(builder.ProviderConnectionString);
这就是你所需要的:)
答案 1 :(得分:1)
为什么你需要使用 EntityConnectionStringBuilder 来链接连接字符串,如下所述:
var connString = new EntityConnectionStringBuilder(ConfigurationManager.ConnectionStrings["ConnectionStringKey"].ConnectionString);
从中你可以检索 ProviderConnectionString ,如下所示:
var providerString = connString.ProviderConnectionString;
对于Oracle:
对于oracle,您可以使用OracleConnectionStringBuilder
答案 2 :(得分:0)
如果需要,可以使用正则表达式获取连接字符串:
(data source).*[^"]
答案 3 :(得分:0)
按给定的分隔符尝试splitting string。然后连接数组元素。
string [] stringArray = str.Split(new string [] {" ="},StringSplitOptions.None);
答案 4 :(得分:0)
首先搜索子字符串String.Substring
:
provider connection string=
int index = text.IndexOf(@"provider connection string=");
string result = text.Substring(index).Trim('"');
答案 5 :(得分:0)
试试这个正则表达式:
\"[^\"]*\"
或
\".*?\"
解释:
[^ character_group ]
否定:匹配不在character_group中的任何单个字符。
*?
匹配前一个元素零次或多次,但次数尽可能少。
和示例代码:
foreach(Match match in Regex.Matches(inputString, "\"([^\"]*)\""))
Console.WriteLine(match.ToString());
//或LINQ
var result = from Match match in Regex.Matches(line, "\"([^\"]*)\"")
select match.ToString();
答案 6 :(得分:0)
您可以使用SubString逻辑。
string strConnection = @"metadata=res://*/Mapping.Models.csdl|res://*/Mapping.Models.ssdl|res://*/Mapping.Models.msl;provider=Oracle.ManagedDataAccess.Client;provider connection string='""data source=TESTSERVER;password=pass;persist security info=True;user id=id";
strConnection = strConnection.Substring(strConnection.LastIndexOf("data source"));