2011-11-11 54 views
1

接收一個整數,我有一些字符串如以下所列:C#創建模式從字符串

hu212 text = 1 
reference = 1 
racial construction = 1 
2007 = 1 
20th century history = 2 

,我想只取整數後的「=」 ..我該怎麼辦呢? 我試圖這樣的:

Regex exp = new Regex(@"[a-zA-Z]*[0-9]*[=][0-9]+",RegexOptions.IgnoreCase); 
      try 
      { 
       MatchCollection MatchList = exp.Matches(line); 
       Match FirstMatch = MatchList[0]; 
       Console.WriteLine(FirstMatch.Value); 
      }catch(ArgumentOutOfRangeException ex) 
      { 
       System.Console.WriteLine("ERROR"); 
      } 

,但它不工作... 我tryed其他一些人,但我得到像「20」或「hu212」結果... 什麼exaclty匹配呢?給我與reg不匹配的字符串的其餘部分?

+0

您可以使用String的'IndexOf'和'Substring'方法。 – srkavin

+0

爲什麼你不能使用string.split函數?只是一個想法.. – xgencoder

回答

5

代替正則表達式,你也可以這樣做:

int match = int.Parse(line.SubString(line.IndexOf('=')).Trim()); 
4

你需要讓=和數字之間的空格(\s):

Regex pattern = new Regex(@"=\s*([0-9]+)$"); 

下面是一個更完整的例子:

Regex pattern = new Regex(@"=\s*([0-9]+)$"); 
Match match = pattern.Match(input); 
if (match.Success) 
{ 
    int value = int.Parse(match.Groups[1].Value); 
    // Use the value 
} 

看到它在線工作:ideone

+0

+1不要指責使用一個非常簡單的正則表達式的傢伙。 *和*回答他的問題 – Crisfole

+0

類似的東西..但我不想'=' – tequilaras

+0

OP沒有規定它必須是正則表達式。 –

1

怎麼樣

string str = "hu212 text = 1" 
string strSplit = str.split("=")[1].trim(); 
0
String StringToParse = "hu212 text = 1"; 
String[] splitString = String.Split(StringToParse); 

Int32 outNum; 
Int32.TryParse (splitString[splitString.Length-1], out outNum); 
0
Regex pattern = new Regex(@"=\s?(\d)"); 

這允許有或沒有空間。編號在組1中。

hu212 text =1 
reference = 1