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

C# 从C中的字符串获取数字#,c#,.net,regex,C#,.net,Regex,我正在抓取一些类似这样的网站内容-“公司股票7100卢比” 现在,我想从这个字符串中提取数值。我尝试拆分,但我的正则表达式出现了一些问题 请让我知道如何获得此值 使用: var result = Regex.Match(input, @"\d+").Value; 如果只想查找字符串中最后一个“实体”的数字,则应使用以下正则表达式: \d+$ 如果要匹配字符串中的最后一个数字,可以使用: \d+(?!\D*\d) 您可以使用\d+匹配第一次出现的数字: string num = Regex.

我正在抓取一些类似这样的网站内容-“公司股票7100卢比”


现在,我想从这个字符串中提取数值。我尝试拆分,但我的正则表达式出现了一些问题

请让我知道如何获得此值

使用:

var result = Regex.Match(input, @"\d+").Value;
如果只想查找字符串中最后一个“实体”的数字,则应使用以下正则表达式:

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

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

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

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

此代码将返回字符串末尾的整数。如果字符串中还有其他数字,那么这将比正则表达式工作得更好

    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));
    }

我一直喜欢LINQ:

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

虽然
Regex
听起来像是本机的选择…

如果您的数字总是在最后一个空格之后,并且字符串总是以这个数字结尾,您可以通过以下方式获得它:

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

这是我的答案…它是用C#从字符串中分离数字


}

数字是否总是在字符串的末尾?数字是否总是在字符串的末尾?文本是否始终为“公司股票”?是的,数字总是在同一个位置end@RobLevine. 这有什么区别?他不想只看到最后的数字。“但我的正则表达式出了什么问题。”在问了117个问题,代表了近2500人之后,你会认为你现在已经知道了:发布一些代码,向我们展示你的尝试。“如果字符串中的其他地方有数字,这将比正则表达式工作得更好。“-在什么意义上?可以很容易地使正则表达式只匹配字符串末尾的数字。@KirillPolishchuk。你说得对,我刚把它拆了…=)谢谢关于字符串的什么:
1a2
?@KirillPolishchuk。您将获得
12
。我写的
Regex
是本机的选择。我刚刚用
LINQ
展示了另一种方法。(如果这是你的观点的话,我会使用
Regex
)但这会返回IEnumerable(),但不是字符串,不是吗?@Flowerking。我认为您可以编写
新字符串(theString)
将其作为字符串。
str.Substring(str.LastIndexOf(" ") + 1)
    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();



    }
}