从字符串
获得数如何,我可以从以下字符串获得数:仅是为了说明在现实串不存在从字符串
###E[shouldbesomenumber][space or endofline]
[]在这里。
我在.net 2.0中。
谢谢。
我会建议你使用正则表达式或字符串操作隔离只是数字部分,然后根据你需要解析的号码类型int.Parse
,int.TryParse
,decimal.Parse
,decimal.TryParse
等调用。
正则表达式可能看起来像:
@"###E(-?\d+) ?$";
你需要改变它的非整数的,当然。示例代码:
using System;
using System.Text.RegularExpressions;
class Test
{
static void Main(string[] arg)
{
Regex regex = new Regex(@"###E(-?\d+) ?$");
string text = "###E123 ";
Match match = regex.Match(text);
if (match.Success)
{
string group = match.Groups[1].Value;
int parsed = int.Parse(group);
Console.WriteLine(parsed);
}
}
}
需要注意的是,这仍然可能会失败与一些这超过了int
范围。 (另一个原因是使用int.TryParse
...)
您的正则表达式在“### E97/M25” –
@NightWalker未成功或许是因为### E97/M25'没有按照您要求的格式?你要求'### E [shouldbesomenumber] [space or endofline]',但现在你要求'### E [shouldbesomenumber] [space or endofline] [其他字符]'。正确的正则表达式是'“^ ### E( - ?\ d +)?”' – xanatos
static string ExtractNumber(string text)
{
const string prefix = "###E";
int index = text.IndexOfAny(new []{' ', '\r', '\n'});
string number = text.Substring(prefix.Length, index - prefix.Length);
return number;
}
您的号码被提取,你可以解析或使用它,因为它是。
只需为这个简单的语法编写一个for循环 –