Because you wanted speed, this may or may not interest you
unsafe public static string Convert(string input)
{
fixed (char* pInput = input)
{
char* p1, p2, len = pInput + input.Length;
for (p1 = p2 = pInput + 1; p2 < len; p1++, p2++)
*p1 = *(p2 - 1) == '"' && *p2 == '_' ? char.ToUpper(*++p2) : *p2;
return input.Substring(0, (int)(p1 - pInput));
}
}
It simply replaces, "_<char>
to "<Upper case char>
On my pc it can do 445 Mb 1.8 seconds
Sample Input
{
"menu":{
"id":"_file",
"value":"_file",
"popup":{
"menuitem":[
{
"value":"_new",
"onclick":"_createNewDoc()"
},
{
"value":"_open",
"onclick":"_openDoc()"
},
{
"value":"_close",
"onclick":"_closeDoc()"
}
]
}
}
}
Output
{
"menu":{
"id":"File",
"value":"File",
"popup":{
"menuitem":[
{
"value":"New",
"onclick":"CreateNewDoc()"
},
{
"value":"Open",
"onclick":"OpenDoc()"
},
{
"value":"Close",
"onclick":"CloseDoc()"
}
]
}
}
}
Additional resources