我有一個字串,它的字串值由特殊字符 ';' 分隔 我需要拆分字串并將每個值存盤在單獨的字串中。在我的 ipStr 中,諸如 ServerName、DBName、TableNames 和 ColumnNames 之類的關鍵字是識別符號,它不會更改,只有可能會更改的值。
例如。
string ipStr = "ServerName=DevTestServer;DBName=CustomerSummary;TableNames=CustomerDetails&OrderDetails;ColumnNames=ID,CustName,OrderID;"
現在我想分別拆分 ServerName、DBName、TableNames 和 ColumnNames 值,并將每個值存盤在不同的字串中。我在下面嘗試過,但是在找到 ServerName 之后,識別 DBName 部分看起來很困難,而且看起來也不像是一種正確的編碼方式。
string ServerIdentifier = "ServerName=";
string separator = ";";
string serverName = ipStr.Substring(ipStr.IndexOf(ServerIdentifier), ipStr.IndexOf(delimiter));
從 ipStr 獲取如下值的最簡單方法是什么?
string ServerName="DevTestServer";
string DBName="CustomerSummary";
string TableNames="CustomerDetails&OrderDetails";
string ColumnNames="ID,CustName,OrderID";
uj5u.com熱心網友回復:
SqlConnectionStringBuilder無法作業,因為ServerNameetc 不是連接字串中的有效令牌
然而,一種低技術的方法是使用良好的老式Split和ToDictionary
var someWeirdStr = "ServerName=DevTestServer;DBName=CustomerSummary;TableNames=CustomerDetails&OrderDetails;ColumnNames=ID,CustName,OrderID;";
var results = someWeirdStr
.Split(';',StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Split('='))
.ToDictionary(x => x[0], x => x.ElementAtOrDefault(1));
Console.WriteLine(results["ServerName"]);
Console.WriteLine(results["DBName"]);
Console.WriteLine(results["TableNames"]);
Console.WriteLine(results["ColumnNames"]);
輸出
DevTestServer
CustomerSummary
CustomerDetails&OrderDetails
ID,CustName,OrderID
uj5u.com熱心網友回復:
您需要用分號分割字串,然后洗掉任何空字串,然后您可以再次按等號分割并創建結果字典。
string ipStr = "ServerName=DevTestServer;DBName=CustomerSummary;TableNames=CustomerDetails&OrderDetails;ColumnNames=ID,CustName,OrderID;";
var values = ipStr.Split(';')
.Where(x => !string.IsNullOrEmpty(x))
.Select(x => {
var pair = x.Split('=');
return KeyValuePair.Create<string, string>(pair[0], pair[1]);
})
.ToDictionary(pair => pair.Key, pair => pair.Value);
foreach (var i in values) {
Console.WriteLine($"{i.Key}: {i.Value}");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/324513.html
