正则表达式替换字符并在.net C#中转换为大写

时间:2018-07-15 10:08:02

标签: c# json regex string

我有一个巨大的json字符串。我要替换所有“ _abc”参考 属性名称为“ Abc”。如何在C#中使用Regex做到这一点?

使用普通的.net替换,我可以执行以下操作来删除“ _”实例,但不确定如何将第一个字母转换为大写字母。

text = jsonString.Replace("\"_", "\"");

谢谢, 杰伊

1 个答案:

答案 0 :(得分:4)

因为您想要速度,所以您可能感兴趣或不感兴趣

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));
   }
}

它只是将"_<char>替换为"<Upper case char>

在我的电脑上,它可以执行445 Mb 1.8秒

样本输入

{
   "menu":{
      "id":"_file",
      "value":"_file",
      "popup":{
         "menuitem":[
            {
               "value":"_new",
               "onclick":"_createNewDoc()"
            },
            {
               "value":"_open",
               "onclick":"_openDoc()"
            },
            {
               "value":"_close",
               "onclick":"_closeDoc()"
            }
         ]
      }
   }
}

输出

{
   "menu":{
      "id":"File",
      "value":"File",
      "popup":{
         "menuitem":[
            {
               "value":"New",
               "onclick":"CreateNewDoc()"
            },
            {
               "value":"Open",
               "onclick":"OpenDoc()"
            },
            {
               "value":"Close",
               "onclick":"CloseDoc()"
            }
         ]
      }
   }
}

其他资源