C#中不使用for循环将路径变量字符串拆分存入Dictionary
无循环实现字符串拆分到Dictionary<string, string>
你可以借助LINQ来实现,全程不用显式for循环:
- 先把目标字符串按
/分割成字符串数组; - 用
Enumerable.Range生成从0开始的索引序列,序列长度是数组长度的一半(因为每两个元素对应一组键值); - 通过
ToDictionary直接将偶数位索引的元素作为Key,下一个奇数位元素作为Value。
基础实现代码
string input = "value1/672/value2/32/value3/21413"; var parts = input.Split('/'); var keyValueDict = Enumerable.Range(0, parts.Length / 2) .ToDictionary( idx => parts[2 * idx], idx => parts[2 * idx + 1] );
处理边界情况(可选)
如果输入字符串分割后元素数量是奇数(比如多了一个无对应值的键),可以加个判断避免索引越界:
string input = "value1/672/value2/32/value3/21413/extra"; var parts = input.Split('/'); Dictionary<string, string> keyValueDict = new(); if (parts.Length % 2 == 0) { keyValueDict = Enumerable.Range(0, parts.Length / 2) .ToDictionary( idx => parts[2 * idx], idx => parts[2 * idx + 1] ); } else { // 这里可以根据需求处理,比如抛出异常、忽略最后一个元素等 throw new ArgumentException("输入字符串的键值对数量不匹配"); }
内容的提问来源于stack exchange,提问作者Ulisses Farias
相关产品推荐
相关产品推荐

