为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
梵蒂冈之花 2021-10-09 10:02:57
我有一个巨大的json字符串。我想将属性名称的所有“_abc”引用替换为“Abc”。如何在 C# 中使用 Regex 来做到这一点?使用普通的 .net 替换,我可以执行以下操作来删除“_”实例,但不确定如何将第一个字母转换为大写。text = jsonString.Replace("\"_", "\"");谢谢,杰
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

因为你想要速度,这可能会也可能不会让你感兴趣


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()"

            }

         ]

      }

   }

}


查看完整回答
反对 回复 2021-10-09
  • 1 回答
  • 0 关注
  • 172 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信