替换尖括号之间的字符
本文关键字:字符 之间 替换 | 更新日期: 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
对象进行替换。