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

C#中如何无需大量if语句与Substring提取Length后的数值

用正则表达式高效提取Length后的数值

嘿,这个场景用正则表达式来处理简直完美,完全不用写一堆if判断或者手动Substring截取,代码简洁还不容易出错!

核心思路

你的字符串里所有Length: 后面的数值都遵循固定模式:要么是纯数字,要么是带逗号的数字组合。我们可以用正则匹配这个固定模式,直接捕获需要的数值部分。

正则表达式写法

Length: ([\d,]+)
  • Length: :精确匹配前缀,确保我们找的是目标字段
  • ([\d,]+):捕获组,匹配一个或多个数字(\d)或逗号(,),正好覆盖你场景里带逗号或不带逗号的数值情况

代码示例(常用语言)

C# 实现

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string input = "Offset: 23,123 Length: 504 some more text some more text 213I Offset: 23,123 Length: 504 some more text Offset: 23,123 Length: 504 Offset: 23 Length: 504,10 some more text some more text 213I";
        // 定义正则模式
        string pattern = @"Length: ([\d,]+)";
        
        // 匹配所有符合条件的结果
        foreach (Match match in Regex.Matches(input, pattern))
        {
            string lengthValue = match.Groups[1].Value;
            Console.WriteLine($"提取到的Length数值:{lengthValue}");
            
            // 如果需要转成数值类型(比如去掉逗号转整数)
            int numericValue = int.Parse(lengthValue.Replace(",", ""));
            Console.WriteLine($"转成整数后:{numericValue}");
        }
    }
}

Python 实现

import re

input_str = "Offset: 23,123 Length: 504 some more text some more text 213I Offset: 23,123 Length: 504 some more text Offset: 23,123 Length: 504 Offset: 23 Length: 504,10 some more text some more text 213I"
pattern = r"Length: ([\d,]+)"

# 提取所有匹配的数值
matches = re.findall(pattern, input_str)
for num_str in matches:
    print(f"提取到的Length数值:{num_str}")
    
    # 可选:转成数值类型
    num = int(num_str.replace(",", ""))
    print(f"转成整数后:{num}")

补充说明

如果之后需要对提取到的带逗号的数值做计算,只需要先把逗号去掉,再转成对应的数值类型(整数/浮点数)就行,这一步也很简单。

内容的提问来源于stack exchange,提问作者Mark O Shea

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:14:01