2011-10-09 36 views
2

獲得數如何,我可以從以下字符串獲得數:僅是爲了說明在現實串不存在從字符串

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

[]在這裏。

我在.net 2.0中。

謝謝。

+0

只需爲這個簡單的語法編寫一個for循環 –

回答

4

我會建議你使用正則表達式或字符串操作隔離只是數字部分,然後根據你需要解析的號碼類型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

2
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