首页 > 其他分享 >原始配置字符串进行解析并转换为字典

原始配置字符串进行解析并转换为字典

时间:2024-05-23 15:33:08浏览次数:16  
标签:Trim parts 键值 Split 字符串 解析 字典

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 参数指定了字典在比较键时应忽略大小写,这样在通过键访问字典时,不论键的大小写如何都能正确匹配。

标签:Trim,parts,键值,Split,字符串,解析,字典
From: https://www.cnblogs.com/Stephen1024/p/18208555

相关文章

  • 字符串——最小表示法
    字符串——最小表示法定义在字符串\(S\)的所有,与其循环同构的字符串\(T\)中,字典序最小的一个。循环同构:字符串\(S\)循环移位,所有可以得到的字符串\(T\)与\(S\)循环同构。暴力枚举与\(S\)循环同构的每一个字符串,比较其字典序。枚举复杂度\(\mathcalO(n)\),字典......
  • 浏览器解析HTML过程
    1.script的加载与执行body标签后面的script标签的解析步骤:script标签资源的加载是并行的,等所有的script标签资源加载完毕后,再依次按顺序执行script代码<!--远程代码1--><scriptsrc="http://127.0.0.1:80/script1.js"></script><!--本地代码1--><script>console.l......
  • WPF 给类库设置设计时使用的资源字典
    WPF给类库设置设计时使用的资源字典 在开发多语言版本时,我将界面显示的文本保存在语言资源zh.xaml和en.xaml中,但程序启动,加载语言资源时是外部的配置文件决定的,因此语言资源我无法添加在App.xaml文件中,而开发单个XAML界面时,设计器将会因为找不到资源文件的存在,而拿不到资......
  • 逗号分开的字符串,统计个数从高到底排序
    usesWinapi.Windows,Winapi.Messages,System.SysUtils,System.Variants,System.Classes,Vcl.Graphics,System.RegularExpressions, functionCompareStrings(List:TStringList;Index1,Index2:Integer):Integer;beginResult:=StrToInt(List.ValueF......
  • 总结全网C#取随机数方法(整型,浮点型,字符串)
    原文链接:https://blog.csdn.net/m0_65636467/article/details/127770112C#取随机数(Random篇)一、整数随机数//10以内的随机整数Randomrd=newRandom();intn=ran.Next(10);//1-100的随机整数intp=rd.Next(1,100);//大于等于1小于100的整数intNext(intmi......
  • HttpURLConnection 调用soap 并且使用Dom4j解析多层级XML为Map对象
    1.引入dom4j的maven依赖包<dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.4</version></dependency>2.转map方法1importjava.io.BufferedReader;2importjava.io.InputStrea......
  • 力扣-1209. 删除字符串中的所有相邻重复项 II
    1.题目题目地址(1209.删除字符串中的所有相邻重复项II-力扣(LeetCode))https://leetcode.cn/problems/remove-all-adjacent-duplicates-in-string-ii/题目描述给你一个字符串 s,「k倍重复项删除操作」将会从s 中选择 k 个相邻且相等的字母,并删除它们,使被删去的字符串的......
  • 接口测试用例设计的关键步骤与技巧解析
    简介接口测试在需求分析完成之后,即可设计对应的接口测试用例,然后根据用例进行接口测试。接口测试用例的设计也需要用到黑盒测试用例设计方法,和测试流程与理论章节的功能测试用例设计的方法类似,设计过程中还需要增加与接口特性相关的测试用例。接口测试流程接口测试的质量目标......
  • 使用Chrome 开发者工具提取对应的字符串
    最近在查看一个API的数据,效果很好,但是里面只有一部分我想要的内容 如果是简单一点的可以直接获取如下比如我想要提取返回的代码中关键的字符串:"video":"这里的内容"//定义一个正则表达式来匹配'"video":"链接"'格式的字符串varregex=/"video":\s*"([^"]+)"/gi;......
  • Linux基础——为什么Crash无法正常解析vmcore文件?
    一、宕机主机启动项中/boot/vmlinuz与debug工具生成的vmlinux的md5值是否一致?####3、通过buildID检查安装的debug和内核是否匹配:```#eu-readelf-n/boot/vmlinuz-3.10.0-1160.88.1.el7.x86_64Notesection[2]'.notes'of380bytesatoffset0x9cd284:OwnerDatas......