我有一個字符串字符串數據轉換爲字典
string data = "[City, Delhi]&[State, DL]&[Country, IN]";
從中我想的字典。
我想的方法是
- 拆分的 「&」
- 在所得的陣列,解析每個元件 2.1替換 「[」 和 「]」 2.2插入到字典
我討厭這種方法,因爲我的字符串已經有「[」和「]」,我應該可以直接將它添加到Dictionary中。
我有一個字符串字符串數據轉換爲字典
string data = "[City, Delhi]&[State, DL]&[Country, IN]";
從中我想的字典。
我想的方法是
我討厭這種方法,因爲我的字符串已經有「[」和「]」,我應該可以直接將它添加到Dictionary中。
這是一個很好的使用情況進行定期表達式。
var d = Regex.Matches(data, @"\[(?<k>[^,]+), (?<v>[^]]+)\]")
.OfType<Match>()
.ToDictionary(m => m.Groups["k"].Value, m => m.Groups["v"].Value);
我喜歡你的答案。我確實有疑問。假設我的字符串是「」[City,Delhi]&[State,DL]&[Country,IN]&Weather,cold]「;」我運行代碼。我確實得到了正確的輸出。但是如果比賽失敗,我沒有辦法採取行動。 – Rajat
使用該字符串時,第四個值不匹配,因爲它不符合您指定的格式。對於符合條件的用戶,您可以直接枚舉'Regex.Matches()'的結果並在添加到字典之前對它們進行評估。如果您在數據字符串中表示方括號是可選的,那麼解決方案會稍有不同。 –
不,我並不是說方括號是可選的,但由於這是用戶提供的數據,所以不能保證。是的,我同意你說的驗證方法。感謝您的時間 – Rajat
你所描述的方法可能和它將要獲得的一樣好。
一個天真的實現(沒有錯誤處理)將是:
var pairs = data.Split('&');
var dict = new Dictionary<string, string>();
foreach (var pair in pairs)
{
var parts = pair.Split(',');
dict.Add(
parts[0].TrimStart('['),
parts[1].TrimStart().TrimEnd(']'));
}
或者,使用正則表達式來獲取鍵和值:
string data = "[City, Delhi]&[State, DL]&[Country, IN]";
var pairs = data.Split('&');
var dict = new Dictionary<string, string>();
var regex = new System.Text.RegularExpressions.Regex(@"\[(?<key>.*), (?<value>.*)\]");
foreach (var pair in pairs)
{
var match = regex.Match(pair);
// TODO: Error if match.Success == false ?
dict.Add(match.Groups["key"].Value, match.Groups["value"].Value);
}
可以使用linq
string data = "[City, Delhi]&[State, DL]&[Country, IN]";
string[] arr = data.Replace("[", "").Replace("]", "").Split('&');
var dict = arr.ToList().ToDictionary(x => x.Split(',')[0], x => x.Split(',')[1]);
試試這個試試這個...
private static void Splitter()
{
string data = "[City, Delhi]&[State, DL]&[Country, IN]";
Dictionary<string,string> dOutput = new Dictionary<string,string>();
string[] sArr = data.Split('&');
var v = from p in sArr
select p.Replace("[", "").Replace("]", "").Split(',');
var v2 = (from p in v
select p).ToDictionary(item => item[0], item => item[1]);
Console.WriteLine(v2.Count());
}
v2是一個字典對象......
其他人,你能否提出建議我們如何結合這兩個LINQ語句? – A3006
你通過_should的意思是能夠直接將其添加到Dictionary_? –
當我看字典中的元素時,我用格式「[key,value]」來看它們。我希望能夠從這個字符串 – Rajat