gpt4 book ai didi

c# 根据正则表达式突出显示 rtb 文本颜色

转载 作者:太空宇宙 更新时间:2023-11-03 23:14:28 24 4
gpt4 key购买 nike

我对同时使用 rtb 和 regex 有疑问。

我有一个类似 vK-lKs-812349;jra_6993788428;Enx-2674@62 的文本

我的函数将按 deli'ter ';' 拆分数据并将每个部分与正则表达式模式匹配

  • 第一部分"^[a-zA-Z]{2}-[a-zA-Z]{3}-[0-9]{7}$"
  • 第二部分"^[a-zA-Z]{3}_[0-9]{10}$"
  • 第三部分"^[a-zA-Z]{3}-[0-9&~%@*^<>!#$]{7}$"

我想要的是我在 rtb 中有这些数据(所有行都有相似的数据,即相同的数据模式)。当我单击按钮时,函数应该获取光标所在的行,并且它应该与模式匹配,如果正则表达式不匹配,它应该更改文本特定部分的颜色。

示例:如果我在第 2 行并且第二部分数据是 'zza 6993788428' 那么因为缺少 _ 正则表达式将不匹配所以我希望 rtb 中的这部分应该获得红色。

您的帮助将不胜感激。谢谢...

最佳答案

试试这个

     if (!string.IsNullOrEmpty(richTextBox1.Text))
{
int lineStart = 0;
foreach (string item in richTextBox1.Lines)
{
List<string> lst = item.Split(new char[] { ';' }).ToList();
if (lst.Count == 3)
{
if (!Regex.IsMatch(lst[1], "^[a-zA-Z]{3}_[0-9]{10}$"))
{
int Start = richTextBox1.Find(item, lineStart, richTextBox1.TextLength, RichTextBoxFinds.WholeWord);
int End = Start + item.Length;

richTextBox1.Select(Start, End);
richTextBox1.SelectionBackColor = Color.Red;
}
else
{
int Start = richTextBox1.Find(item, lineStart, richTextBox1.TextLength, RichTextBoxFinds.WholeWord);
int End = Start + item.Length;

richTextBox1.Select(Start, End);
richTextBox1.SelectionBackColor = Color.Green;
}
}
lineStart += item.Length;
}
}

关于c# 根据正则表达式突出显示 rtb 文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37741206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com