替换尖括号之间的字符

本文关键字:字符 之间 替换 | 更新日期: 2023-09-27 18:29:32

故事:我有一个列表框,其中显示了当前应用程序的所有方法。我需要将方法参数的数据类型着色为蓝色。

解决方案:首先,我提取括号之间的内容。第二,我想通过COMMA 进行拆分

问题:如果参数包含类似IDictionary<string, string>的内容,并且多次出现,则上述解决方案将面临问题!!因此,我决定首先获取尖括号之间的所有内容,然后将它们的逗号替换为"#COMMA#",在使用上述解决方案执行任务后,只需将"#COMMA#"替换为","。但是,根据此处找到的解决方案,不可能将任何值设置为match.value。这是我的代码:

if (methodArgumentType.Contains("<") && methodArgumentType.Contains(">"))
        {
            var regex = new Regex("(?<=<).*?(?=>)");
            foreach (Match match in regex.Matches(methodArgumentType))
            {
                match.Value = match.Value.Replace(",", "#COMMA#");
            }
        }

非常感谢任何建议。

替换尖括号之间的字符

您需要在Regex.Replace:中替换匹配计算器内的匹配值

var methodArgumentType = "IDictionary<string, string>";
if (methodArgumentType.Contains("<") && methodArgumentType.Contains(">"))
{
    methodArgumentType = Regex.Replace(methodArgumentType, @"<([^<>]+)>", 
        m => string.Format("<{0}>", m.Groups[1].Value.Replace(",", "#COMMA#")));
}
Console.WriteLine(methodArgumentType);
// => IDictionary<string#COMMA# string>

这里,m.Groups[1].Value将保持string, string,并且将对输入字符串本身进行替换,而不是对Regex.Match对象进行替换。