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

如何使用LINQ从字符串列表提取指定键对应值及查询字符位置

解决方案

你现有代码已经拿到了"TOTO=1"这个目标字符串,只需要追加字符串处理逻辑即可拿到对应数值,有两种常用实现方案:

方案1:按=分割字符串(最简便)

直接在现有代码基础上追加分割逻辑,不需要多余的类型转换操作:

// 原代码里的ToList()可以省略,lines本身已经是List类型
var value = lines.Single(x => x.Contains("TOTO=")).Split('=')[1].Trim();

如果需要得到int类型的数值,再加一步类型转换即可:

int num = int.Parse(lines.Single(x => x.Contains("TOTO=")).Split('=')[1].Trim());

方案2:先定位=位置再截取(对应你查询字符位置的需求)

如果需要先查询等号在字符串中的下标位置,再截取后续内容,可以用IndexOf方法实现:

string targetLine = lines.Single(x => x.Contains("TOTO="));
// 获取等号的下标位置,在"TOTO=1"中返回值为4
int equalIndex = targetLine.IndexOf('=');
// 从等号的下一位开始截取内容
string value = targetLine.Substring(equalIndex + 1).Trim();

这种方式兼容性更强,就算数值部分也包含=字符,也能正常取出第一个等号之后的全部内容。

边界优化建议

如果不能保证列表里一定存在TOTO=开头的元素,建议做异常兼容处理:

  • 用StartsWith("TOTO=")代替Contains("TOTO="),避免匹配到内容中间包含TOTO=的无效行
  • 用SingleOrDefault代替Single,匹配不到目标元素时不会直接抛出异常
string targetLine = lines.SingleOrDefault(x => x.StartsWith("TOTO="));
if (targetLine != null)
{
    string value = targetLine.Split('=')[1].Trim();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:15:09