using System;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
private const string INPUT =
"Project(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Common\", \"Libraries\\Common\\Common.csproj\", \"{91197577-34B9-4D46-B3FE-A8589D4380B1}\"";
private const string OUTPUT =
"Project(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Blah\", \"..\\Core\\Libraries\\Blah\\Blah.csproj\", \"{91197577-34B9-4D46-B3FE-A8589D4380B1}\"";
public static void Main()
{
var name = "Blah";
var location = "..\\Core\\Libraries\\Blah\\Blah.csproj";
var result = Regex.Replace(INPUT, "^(.*\")(\\w+)(\".*\")([\\w\\\\\\.]+)(\".*)$", m =>
{
return string.Join("",
m.Groups.OfType<Group>().Select((g, i) =>
{
switch (i)
{
case 1:
return g.Value;
case 2:
return name;
case 3:
return g.Value;
case 4:
return location;
default:
return g.Value;
}
}).Skip(1).ToArray());
});
Console.Out.WriteLine($"Input:\t\t{INPUT}");
Console.Out.WriteLine($"Expected:\t{OUTPUT}");
Console.Out.WriteLine($"Actual:\t\t{result}");
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHJpdmF0ZSBjb25zdCBzdHJpbmcgSU5QVVQgPQogICAgICAgICAgICAiUHJvamVjdChcIntGQUUwNEVDMC0zMDFGLTExRDMtQkY0Qi0wMEMwNEY3OUVGQkN9XCIpID0gXCJDb21tb25cIiwgXCJMaWJyYXJpZXNcXENvbW1vblxcQ29tbW9uLmNzcHJvalwiLCBcIns5MTE5NzU3Ny0zNEI5LTRENDYtQjNGRS1BODU4OUQ0MzgwQjF9XCIiOwoKCXByaXZhdGUgY29uc3Qgc3RyaW5nIE9VVFBVVCA9CiAgICAgICAgICAgICJQcm9qZWN0KFwie0ZBRTA0RUMwLTMwMUYtMTFEMy1CRjRCLTAwQzA0Rjc5RUZCQ31cIikgPSBcIkJsYWhcIiwgXCIuLlxcQ29yZVxcTGlicmFyaWVzXFxCbGFoXFxCbGFoLmNzcHJvalwiLCBcIns5MTE5NzU3Ny0zNEI5LTRENDYtQjNGRS1BODU4OUQ0MzgwQjF9XCIiOwoKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQl2YXIgbmFtZSA9ICJCbGFoIjsKICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gIi4uXFxDb3JlXFxMaWJyYXJpZXNcXEJsYWhcXEJsYWguY3Nwcm9qIjsKICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFJlZ2V4LlJlcGxhY2UoSU5QVVQsICJeKC4qXCIpKFxcdyspKFwiLipcIikoW1xcd1xcXFxcXC5dKykoXCIuKikkIiwgbSA9PgogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmcuSm9pbigiIiwKICAgICAgICAgICAgICAgICAgICAgICAgbS5Hcm91cHMuT2ZUeXBlPEdyb3VwPigpLlNlbGVjdCgoZywgaSkgPT4KICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGcuVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnLlZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnLlZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9KS5Ta2lwKDEpLlRvQXJyYXkoKSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgQ29uc29sZS5PdXQuV3JpdGVMaW5lKCQiSW5wdXQ6XHRcdHtJTlBVVH0iKTsKICAgICAgICAgICAgQ29uc29sZS5PdXQuV3JpdGVMaW5lKCQiRXhwZWN0ZWQ6XHR7T1VUUFVUfSIpOwogICAgICAgICAgICBDb25zb2xlLk91dC5Xcml0ZUxpbmUoJCJBY3R1YWw6XHRcdHtyZXN1bHR9Iik7Cgl9Cn0=
Input: Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common", "Libraries\Common\Common.csproj", "{91197577-34B9-4D46-B3FE-A8589D4380B1}"
Expected: Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blah", "..\Core\Libraries\Blah\Blah.csproj", "{91197577-34B9-4D46-B3FE-A8589D4380B1}"
Actual: Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blah", "..\Core\Libraries\Blah\Blah.csproj", "{91197577-34B9-4D46-B3FE-A8589D4380B1}"