我正在抓一些类似的网站内容 - “公司股票价格7100”。
现在,我想要的是从这个字符串中提取数值。我试过分裂,但是我的正则表达式出现了问题。
请告诉我如何获得这个价值。
答案 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;