我有这种输入如何将其转换为 C#
Input = <!--EVENT-GALLERY-VIEW WIDTH=500 -->
Output = "<widget:EventList id=\"EventList1\" Width=\"500\" runat=\"server\" />"
Input = <!--EVENT-GALLERY-VIEW WIDTH=500 CATEGORY=SPORTS -->
Output = <widget:EventList id=\"EventList1\" Width=\"500\" runat=\"server\" Category=\"Sport\" />"
以下代码适用于第一种情况,但不适用于第二种情况How can i Alter var pattern = @"(\w*)(\s*))*(\s*)(-->)";
static void Main(string[] args)
{
var result = "<!--EVENT-GALLERY-VIEW WIDTH=500 -->";
var pattern = @"(<!--)(\s*)(EVENT-GALLERY-VIEW)(\s*)((WIDTH)(=)(?<value>\w*)(\s*))*(\s*)(-->)|(<!--)(\s*)(EVENT-GALLERY-VIEW)(\s*)((WIDTH)(=)(?<value>\w*)(\s*))*(\s*)(-->)";
var replaceTag = "<widget:EventList id=\"EventList@@id\" Width=\"@@value\" runat=\"server\" />";
result = RegexReplaceWithUniqueTag(result, pattern, replaceTag);
}
static string RegexReplaceWithUniqueTag(string result, string pattern, string replaceTag)
{
Regex regex = new Regex(pattern);
MatchCollection mc = regex.Matches(result);
for (int i = mc.Count - 1; i >= 0; i--)
{
string newreplaceTag = replaceTag;
newreplaceTag = newreplaceTag.Replace("@@id", i.ToString(CultureInfo.InvariantCulture));
if (mc[i].Groups["value"] != null)
newreplaceTag = newreplaceTag.Replace("@@value", mc[i].Groups["value"].Value);
result = result.Remove(mc[i].Index, mc[i].Length);
result = result.Insert(mc[i].Index, newreplaceTag);
}
return result;
}