gpt4 book ai didi

c# - 如何转义正则表达式中的特殊字符?

转载 作者:太空狗 更新时间:2023-10-29 23:16:22 24 4
gpt4 key购买 nike

此代码搜索富文本框并将数组的第一个字段替换为第二个字段。除了其中两个字段外,一切正常。

iEmo = new string[,] {
{@":\)", Smile},
{@":\(", Sad},
{@"8\)", Cool},
{@":\|", Neutral},
{@";\)", Wink},
{@">:\(", Evil}, // Won't work for this one
{@">:D", Twisted}, // Or this one
{@":\?", Question,}
};

这是将数组转换成我想要的部分:

public void SetSmiley(RichTextBox RichBox) {
for (int i = 0; i < (iEmo.Length / 3); i++) {
try {
RichBox.Rtf = Regex.Replace(RichBox.Rtf, iEmo[i, 0], iEmo[i, 1], RegexOptions.IgnoreCase);
}
catch (Exception e){}
}
}

最佳答案

你的正则表达式看起来不错,但我发现有一些东西阻碍了它的工作:

for (int i = 0; i < (iEmo.Length / 3); i++)

我不知道你为什么要除以 3。你应该在这里使用第一个维度的长度:

for (int i = 0; i < iEmo.GetLength(0); i++)

此外,由于替换发生的顺序,正常的皱眉 ":(" 将在“邪恶”面孔 ">:(" 之前被替换。当循环到达邪恶的情况时,字符串看起来像 ">Sad"。你应该按照复杂度递减的方式重新排列你的替换,像这样:

iEmo = new string[,]
{
{@">:\(", Evil},
{@":\)", Smile},
{@":\(", Sad},
{@"8\)", Cool},
{@":\|", Neutral},
{@";\)", Wink},
{@">:D", Twisted},
{@":\?", Question,}
};

再说一次,正常的字符串替换将适用于上述更改。

关于c# - 如何转义正则表达式中的特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13436936/

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