2013-07-11 30 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”'只是一些示例输入用于演示目的。你实际上必须从你尝试阅读的任何文本中获得。 –

相关问题