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

如何从含多个制表符的字符串中提取目标浮点数值?

多制表符字符串的数字提取方案

你的问题核心是原字符串通过多个制表符分隔内容,用Substring手动计算索引容易出错。换用按分隔符拆分的方式会更简单可靠,步骤如下:

步骤说明

  1. 从源字符串中筛选出包含FIRST的目标行(源字符串为多行结构)
  2. 用制表符(\t)拆分目标行,得到各个元素的数组
  3. 提取数组对应位置的元素,处理数字格式后转换为float

完整代码实现

string source = "1\t\nFIRST\t36\t4.976.501\t3.162\t3.121\t26\n2\t\n";

// 拆分所有行并过滤空行
var lines = source.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
// 定位包含"FIRST"的目标行
string targetLine = lines.First(line => line.Contains("FIRST"));

// 用制表符拆分目标行内容,过滤空元素
var parts = targetLine.Split(new[] { '\t' }, StringSplitOptions.RemoveEmptyEntries);

// 提取并转换数字:带多个点的是千分位分隔格式,需先移除分隔符再转换
float firstNumber = float.Parse(parts[1]);
float secondNumber = float.Parse(parts[2].Replace(".", ""));
float thirdNumber = float.Parse(parts[3].Replace(".", ""));
float fourthNumber = float.Parse(parts[4].Replace(".", ""));
float fifthNumber = float.Parse(parts[5]);

// 输出结果
Console.WriteLine($"float firstNumber = {firstNumber};");
Console.WriteLine($"float secondNumber = {secondNumber};");
Console.WriteLine($"float thirdNumber = {thirdNumber};");
Console.WriteLine($"float fourthNumber = {fourthNumber};");
Console.WriteLine($"float fifthNumber = {fifthNumber};");

关键说明

  • 放弃Substring手动计算索引:当字符串结构变化(比如分隔符数量改变)时,索引计算会直接失效,Split方法按分隔符拆分的逻辑更灵活稳定
  • 处理特殊数字格式:原字符串中的4.976.501是用点作为千分位分隔符的格式,转换为float前必须移除这些分隔符,否则float.Parse会抛出格式异常

内容的提问来源于stack exchange,提问作者Michał Schmude

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:45:34