原始配置字串進行解析並轉換為字典

AWT-Stephen發表於2024-05-23

var configPairs = mqttConfig.Split(';') .Select(pair => pair.Split('=')) .Where(parts => parts.Length == 2) .ToDictionary(parts => parts[0].Trim(), parts => parts[1].Trim(), StringComparer.OrdinalIgnoreCase);

1、分割配置字串:
mqttConfig.Split(';')
首先,使用分號(;)作為分隔符,將原始的配置字串mqttConfig分割成一個字串陣列。每個元素都是一個獨立的鍵值對字串,形如 "key=value"。
2、轉換並篩選:
.Select(pair => pair.Split('='))
.Where(parts => parts.Length == 2)
Select方法遍歷上一步得到的每個鍵值對字串,對每個字串再使用等號(=)進行分割,將其轉換成一個字串陣列(包含鍵和值)。
Where方法進一步過濾這些陣列,僅保留長度為2的陣列,確保每個鍵值對都是由一個鍵和一個值組成,從而排除掉格式錯誤的條目。
3、構建字典:
.ToDictionary(parts => parts[0].Trim(), parts => parts[1].Trim(), StringComparer.OrdinalIgnoreCase)
最後,使用ToDictionary方法將篩選後的鍵值對陣列轉換成一個字典。這個方法接受兩個Lambda表示式作為引數,分別用來提取鍵和值:
parts[0].Trim() 作為鍵,表示取分割後的第一個元素(鍵),並去除首尾空白。
parts[1].Trim() 作為值,表示取分割後的第二個元素(值),同樣去除首尾空白。
StringComparer.OrdinalIgnoreCase 引數指定了字典在比較鍵時應忽略大小寫,這樣在透過鍵訪問字典時,不論鍵的大小寫如何都能正確匹配。

相關文章