如何从linqC#中的字符串中提取第一个数字

本文关键字:提取 第一个 数字 字符串 linqC# | 更新日期: 2023-09-27 18:05:13

我需要从字符串中取第一个数字,例如

"12345 this is a number " => "12345"
"123 <br /> this is also numb 2" => "123"

等等。

为此,我使用C#代码:

    string number = "";
    foreach(char c in ebayOrderId)
    {
        if (char.IsDigit(c))
        {
            number += c;
        }
        else
        {
            break;
        }
    }
    return number;

如何通过LINQ实现同样的功能?

谢谢!

如何从linqC#中的字符串中提取第一个数字

您可以尝试Enumerable.TakeWhile:

ebayOrderId.TakeWhile(c => char.IsDigit(c));

您可以使用LINQ TakeWhile来获取数字列表,然后使用new string来获取字符串编号

var number = new string(ebayOrderId.TakeWhile(char.IsDigit).ToArray());

使用正则表达式

Regex re=new Regex(@"'d+'w");

尝试测试是否在http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx

祝你好运!

我会改进@David的回答。('d+)[^'d]*:后面跟着任何不是数字的数字。

您的号码将在第一组:

static void Main(string[] args)
{
    Regex re = new Regex(@"('d+)[^'d]*", RegexOptions.Compiled);
    Match m = re.Match("123 <br /> this is also numb 2");
    if (m.Success)
    {
        Debug.WriteLine(m.Groups[1]);
    }
}