0

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

"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 做同样的事情?

谢谢!

4

4 回答 4

8

你可以试试Enumerable.TakeWhile

ebayOrderId.TakeWhile(c => char.IsDigit(c));
于 2013-03-21T15:22:19.093 回答
2

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

var number = new string(ebayOrderId.TakeWhile(char.IsDigit).ToArray());
于 2013-03-21T15:24:10.467 回答
0

使用正则表达式

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

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

祝你好运!

于 2013-03-21T15:22:32.917 回答
0

我会改进@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]);
    }
}
于 2013-03-21T15:49:49.167 回答