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