You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于多个固定标识符拆分字符串并提取对应字段值?

提取分号分隔键值对中指定值的最简方法

这问题我太熟悉了!你现在的需求是从固定格式的键值对字符串里提取指定键的值,之前的写法不仅容易出错,扩展性也差。给你推荐两种简洁又规范的实现方式:

方法一:拆分后转换为字典(最推荐)

这种方法逻辑清晰,扩展性强,后续要加新的键值对也不用改太多代码:

string ipStr = "ServerName=DevTestServer;DBName=CustomerSummary;TableNames=CustomerDetails&OrderDetails;ColumnNames=ID,CustName,OrderID;";

// 1. 按分号拆分所有键值对,过滤掉末尾的空项
// 2. 每个键值对只按第一个等号拆分(避免值里包含等号的情况)
// 3. 转换为字典,直接通过键取值
var keyValueDict = ipStr.Split(';')
    .Where(item => !string.IsNullOrWhiteSpace(item))
    .Select(item => item.Split('=', 2))
    .ToDictionary(pair => pair[0], pair => pair[1]);

// 直接提取目标值
string ServerName = keyValueDict["ServerName"];
string DBName = keyValueDict["DBName"];
string TableNames = keyValueDict["TableNames"];
string ColumnNames = keyValueDict["ColumnNames"];

为什么这方法好?

  • 代码简洁易读,逻辑一目了然
  • 自动处理所有键值对,不用逐个写Substring逻辑
  • Split('=', 2)确保即使值里包含等号(比如Key=Value=123)也能正确拆分

方法二:正则表达式匹配

如果你更喜欢用正则来处理字符串,也可以用这种方式快速捕获所有键值对:

using System.Text.RegularExpressions;

string ipStr = "ServerName=DevTestServer;DBName=CustomerSummary;TableNames=CustomerDetails&OrderDetails;ColumnNames=ID,CustName,OrderID;";

// 正则匹配:捕获键(字母/数字/下划线)和对应的值(直到分号的所有内容)
var matches = Regex.Matches(ipStr, @"(\w+)=([^;]+)");
var keyValueDict = matches.Cast<Match>()
    .ToDictionary(match => match.Groups[1].Value, match => match.Groups[2].Value);

// 提取目标值
string ServerName = keyValueDict["ServerName"];
string DBName = keyValueDict["DBName"];
string TableNames = keyValueDict["TableNames"];
string ColumnNames = keyValueDict["ColumnNames"];

说说你原来代码的问题

你之前用Substring的写法有个关键错误:Substring的第二个参数是截取长度,不是结束位置。所以正确的写法应该是:

int startIndex = ipStr.IndexOf(ServerIdentifier);
int endIndex = ipStr.IndexOf(separator, startIndex);
string serverName = ipStr.Substring(startIndex + ServerIdentifier.Length, endIndex - startIndex - ServerIdentifier.Length);

但这种写法不仅繁琐,每提取一个值都要重复写类似逻辑,还容易因为字符串格式变化(比如键的顺序变了)出问题,完全不如上面两种方法高效。

内容的提问来源于stack exchange,提问作者Tech Learner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 20:42:40