2014-10-29 50 views
1

即时通讯做一些实验,我如何获取richTextBox控件中字符串的特定索引。通过验证获取lastIndex

情景: 我需要找到#> lastIndex的,但犯规匹配##>

原因(2)##将阻止#

继承人什么,我开始为现在:

string text = richTextBox1.Text; 
int lastIndexOffragment = text.LastIndexOf('#>'); 

Q :我如何才能找到真正的最后一个指数#>,并验证它不是##>

--- 更新

注意:如果可能没有循环(例如的foreach或for循环)

样本串中RTB:

#> 000010 IDENTIFICATION DIVISION. 
#> 000020 PROGRAM-ID. K1. 
##> 000030 
#> 000040 ENVIRONMENT DIVISION. 
#> 000050 INPUT-OUTPUT SECTION. 
##> 000060 FILE-CONTROL. 
#> 000070  SELECT OPTIONAL LOGIN-TABLE1 
##> 000080  ASSIGN TO "LL22" 
##> 000090  ORGANIZATION IS INDEXED 
verified #> 000100  RECORD KEY IS LPASSWD 
done ##> 000110  ACCESSING MODE IS COMPLETED . 

结果应该是#>索引之后verified

+0

你能在这里显示样本字符串吗? – Shell 2014-10-29 08:22:27

+0

@Shell我认为是''aaa#> ##>“。LastIndexOf(”#>“)是8,但OP需要4。 – artm 2014-10-29 08:27:05

+0

@Shell已应用。那是我用来测试的字符串。 – Elegiac 2014-10-29 08:29:11

回答

0

我知道这是很丑陋的方法,但,我认为这将是很容易的,而不是complecated。

str = "your string"; 

int iLastIndex = str.Replace("##>", "^^>").LastIndexOf("#>"); 

您可以使用任何字符而不是^

+0

这样做。谢谢@Shell:P – Elegiac 2014-10-29 08:53:13

0

尝试正确匹配的正则表达式:

int lastIndexOffragment = System.Text.RegularExpressions.Regex.Match(richTextBox1.Text, @"\#>\W").Index; 

更新:

System.Text.RegularExpressions.Regex rx = new System.Text.RegularExpressions.Regex(@"\#>\W"); 

System.Text.RegularExpressions.MatchCollection matches = rx.Matches(richTextBox1.Text); 
int lastIndex = matches[matches.Count - 1].Index; 
+0

它与##>匹配吗? – Elegiac 2014-10-29 08:35:51

+0

@Elegiac查看更新以获取正则表达式的最后一个索引。 – artm 2014-10-29 08:41:23

+0

它的工作,但问题是它也匹配##> – Elegiac 2014-10-29 08:46:59