2013-07-11 50 views
1

所以我有下面的方法可以掃描單詞列表,找到「Control Number:」並將其設置爲wordNumber,然後將下一個單詞設置爲controlNum(這是字符串I我期待着回來)。查找字符串後的下一個字

public string ABSFindControlNumber(List<tessnet2.Word> wordList) 
     { 
    for (int i = 0; i < wordList.Count; i++) 
        { 
         if (wordList[i].Text == "Control Number:" && wordList[i].Confidence >= 50) 
         { 

          string wordNumber = wordList[i].Text.ToString(); 
          controlNum = wordList[i + 1].Text.ToString(); 
          return controlNum; 
     } 
     } 
} 

但是找到了如何使用RegEx的類似方法。我想看看是否有辦法將controlNum設置爲下一個單詞。對於某些字母/數字,我有幾個不同的情況,以防萬一找不到確切的單詞。

if (Regex.IsMatch(text, @"c(0|o)ntr(0|o)(l|1|i)\s+nu(in|m)ber(:|;|s)", RegexOptions.IgnoreCase)) 
{ 
       controlNum = ??? 
} 

回答

1

你可以這樣做:

string text = "Control Number: 123foobar"; 
var match = Regex.Match(text, @"c[o0]ntr[o0][l1i]\s+nu(?:in|m)ber[:;s]\s*(\w*)", RegexOptions.IgnoreCase); 
if (match.Success) 
{ 
    var controlNum = match.Groups[1].Value; // 123foobar 
} 
+0

這似乎並沒有工作,完全正確。如果我完全按照您的要求保留代碼,controlNum將爲'123foobar'。但是,如果我從'string text'中刪除'123foobar',那麼controlNum將只是「」。 ...我不知道這個功能之前的控制號碼。 – MaylorTaylor

+0

@MaylorTaylor大概你是從* somewhere *中讀取一段文本,然後試圖解析它來獲得控制編號,對吧?那麼我的'text =「控制編號:123foobar」'只是一些示例輸入用於演示目的。你實際上必須從你嘗試閱讀的任何文本中獲得。 –

相關問題