从字符串

问题描述:

获得数如何,我可以从以下字符串获得数:仅是为了说明在现实串不存在从字符串

###E[shouldbesomenumber][space or endofline] 

[]在这里。

我在.net 2.0中。

谢谢。

+0

只需为这个简单的语法编写一个for循环 –

我会建议你使用正则表达式或字符串操作隔离只是数字部分,然后根据你需要解析的号码类型int.Parseint.TryParsedecimal.Parsedecimal.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 ...)

+0

您的正则表达式在“### E97/M25” –

+1

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

您的号码被提取,你可以解析或使用它,因为它是。

+0

您应该添加对text.IndexOf('\ n')的检查。 – xanatos

+0

@xanatos添加了它。尽管在Windows中,它几乎总是在\ n之前。 –

+0

您可以使用[String.IndexOfAny](http://msdn.microsoft.com/zh-cn/library/11w09h50(v = VS.80).aspx) – xanatos