我目前正在尝试开发一种行为类似于Notepad ++的软件。关于'着色'部分,我使用正则表达式和包含正则表达式的外部文件。每个单词的颜色。
该文件如下所示:
<script&blue
/>&blue
\".*?\"&red
然后软件读取文件并将其转换为字符串数组'string []',方法是将其拆分为每个换行符。此数组称为“校正器”。然后我使用以下方法来查找&amp;设置匹配正则表达式模式的每个单词的颜色:
foreach (string corrector in Correctors) {
string[] spTxt = corrector.Split('&');
Match matches = Regex.Match(rtb_Main.Text, spTxt[0]);
Color color = Color.FromName(spTxt[1]);
while (matches.Success)
{
rtb_Main.SelectionStart = matches.Index;
rtb_Main.SelectionLength = matches.Length;
rtb_Main.SelectionColor = color;
matches = matches.NextMatch();
}
}
这是问题发生的地方。该方法正如数组'Correctors'中的最后一个字符串所假设的那样。然而;似乎数组中的其他对象被覆盖或被忽略,因为匹配其模式的单词没有被着色。
有什么问题?
提前致谢,
- Rasmus。
答案 0 :(得分:2)
编译时没有收到任何错误。我的意思是说你是怎么得到的:
while (matches.Success)
应该是这样的..
// Use foreach loop.
foreach (Match match in matches)
{
if(match.Success)
{
//Change color here...
}
}