从C#中的字符串中获取数字

时间:2012-03-20 14:33:18

标签: c# .net regex

我正在抓一些类似的网站内容 - “公司股票价格7100”

现在,我想要的是从这个字符串中提取数值。我试过分裂,但是我的正则表达式出现了问题。

请告诉我如何获得这个价值。

7 个答案:

答案 0 :(得分:13)

使用:

var result = Regex.Match(input, @"\d+").Value;

如果您只想找到最后一个"实体"在字符串中你应该使用这个正则表达式:

\d+$

如果要匹配字符串中的最后一个数字,可以使用:

\d+(?!\D*\d)

答案 1 :(得分:4)

int val = int.Parse(Regex.Match(input, @"\d+", RegexOptions.RightToLeft).Value);

答案 2 :(得分:2)

我一直很喜欢LINQ

var theNumber = theString.Where(x => char.IsNumber(x));    

虽然Regex听起来像是原生的选择......

答案 3 :(得分:1)

此代码将返回字符串末尾的整数。在字符串中的其他地方有一个数字的情况下,这将比正则表达式更好。

    public int getLastInt(string line)
    {
        int offset = line.Length;
        for (int i = line.Length - 1; i >= 0; i--)
        {
            char c = line[i];
            if (char.IsDigit(c))
            {
                offset--;
            }
            else
            {
                if (offset == line.Length)
                {
                    // No int at the end
                    return -1;
                }
                return int.Parse(line.Substring(offset));
            }
        }
        return int.Parse(line.Substring(offset));
    }

答案 4 :(得分:1)

如果你的号码总是在最后一个空格之后,你的字符串总是以这个号码结尾,你就可以这样说:

str.Substring(str.LastIndexOf(" ") + 1)

答案 5 :(得分:1)

这是我的答案....它是使用C#....

将数字与字符串分开
    static void Main(string[] args)
    {
        String details = "XSD34AB67";
        string numeric = "";
        string nonnumeric = "";
        char[] mychar = details.ToCharArray();
        foreach (char ch in mychar)
        {
            if (char.IsDigit(ch))
            {

                numeric = numeric + ch.ToString();
            }
            else
            {
                nonnumeric = nonnumeric + ch.ToString();
            }
        }

        int i = Convert.ToInt32(numeric);
        Console.WriteLine(numeric);
        Console.WriteLine(nonnumeric);
        Console.ReadLine();



    }
}

}

答案 6 :(得分:0)

您可以使用\d+来匹配第一次出现的数字:

string num = Regex.Match(input, @"\d+").Value;