获取带验证的lastIndex

时间:2014-10-29 08:21:01

标签: c# winforms

我正在做一些实验,我怎样才能在richTextBox Control中获得特定的字符串索引。

情形: 我需要找到#>的lastIndex但与##>

不匹配

原因(2)##会阻止#

这是我现在开始的事情:

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

问:如何通过验证#>

找到真实的最后一个##>索引

---已更新

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

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的索引

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

我知道这是非常难看的方法但是,我认为这将非常容易,而且不会被复杂化。

str = "your string";

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

您可以使用任何字符代替^