提取c#代码文件中的方法块

     此方法是取C#文件里面的方法块,并删除缩进符,感觉写得还是比较容易懂的,所以收藏下,以便将来用到.

       private static string GetCodeBlock(string allCode, string blockName)
        {
            int blockStart = allCode.IndexOf(blockName, StringComparison.OrdinalIgnoreCase);

            if (blockStart == -1)
                return "// " + blockName + " code not found";
            blockStart = allCode.LastIndexOf(Environment.NewLine, blockStart, StringComparison.OrdinalIgnoreCase);
            if (blockStart == -1)
                blockStart = 0;
            else
                blockStart += Environment.NewLine.Length;

            int pos = blockStart;
            int braceCount = 0;
            char c;
            do
            {
                pos++;

                c = allCode[pos];
                switch (c)
                {
                    case ‘{‘:
                        braceCount++;
                        break;

                    case ‘}‘:
                        braceCount--;
                        break;
                }
            } while (pos < allCode.Length && !(c == ‘}‘ && braceCount == 0));

            int blockEnd = pos;

            string blockCode = allCode.Substring(blockStart, blockEnd - blockStart + 1);

            return removeIndent(blockCode);
        }

        private static string RemoveIndent(string code)
        {
            int indentSpaces = 0;
            while (code[indentSpaces] == ‘ ‘)
            {
                indentSpaces++;
            }

            StringBuilder builder = new StringBuilder();
            string[] codeLines = code.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
            foreach (string line in codeLines)
            {
                if (indentSpaces < line.Length)
                    builder.AppendLine(line.Substring(indentSpaces));
                else
                    builder.AppendLine();
            }

            return builder.ToString();
        }

  

时间: 2024-10-31 18:41:03

提取c#代码文件中的方法块的相关文章

《Java虚拟机原理图解》1.5、 class文件中的方法表集合--method方法在class文件中是怎样组织的

0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的. 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成<Java虚拟机原理图解> 这个系列,以图解的形式,将抽象的JVM虚拟机的知识具体化,希望能够对想了解Java虚拟机原理的的Java程序员 提供点帮助.

《Java虚拟机原理图解》6、 class文件中的方法表集合--method方法在class文件中是怎样组织的

0. 前言 了解JVM虚拟机原理是每一个Java程序员修炼的必经之路.但是由于JVM虚拟机中有很多的东西讲述的比较宽泛,在当前接触到的关于JVM虚拟机原理的教程或者博客中,绝大部分都是充斥的文字性的描述,很难给人以形象化的认知,看完之后感觉还是稀里糊涂的. 感于以上的种种,我打算把我在学习JVM虚拟机的过程中学到的东西,结合自己的理解,总结成<Java虚拟机原理图解> 这个系列,以图解的形式,将抽象的JVM虚拟机的知识具体化,希望能够对想了解Java虚拟机原理的的Java程序员 提供点帮助.

统计JAR包DEX文件中的方法数目

 前段时间做Android项目中,一直出现方法数超过65535的问题,如果混淆后代码中的方法数目没有超过65535,可以通过 在project.properties文件中加上一行dex.force.jumbo=true,解决这个问题. 后来自己参考了网上的一些方法,写了个小工具用来统计JAR包和DEX文件中的方法数目.主要原理就是利用DEX的文件结构的文件头中有个method_ids_siz来统计方法数目. 现在分享出来,代码如下,直接拷贝编译成JAR包,然后控制台:java -jar XXX.

Delphi 中调用JS文件中的方法

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ComObj,ActiveX; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button

php提取csv格式文件中的字符串出现的问题及解决办法

php带csv格式的数据要用到fgetcsv()函数. 用这下面的语句 $hd=fopen('test.csv','r'); $buf=fgetcsv($hd,1000,','); 打开一个test.csv格式的文件,文件中的内容以","号分开. 取出的第一行代表自动含义,比如 id,messaget,time等等. 从第二行开始表示具体的数据,比如1,消息,12:00. if($buf[1]=="some messages") echo "yes&quo

Linux下执行的java命令重定向到文件中的方法

在Linux下通常会执行如:java -version 的命令, 但是,命令只是打印到了屏幕上不能重定向到文件中或标准输出流中. 此时需要将错误输出流重定向到标准输出流中就可以得到了. 比如:java -version> test.log 2>&1 就可以将输出的信息重定向到test.log中,注意>与-version之间不能有空格. 再比如:java -version 2>&1 | grep "java version" | awk '{pri

markdown在文件中运用方法

1,进入npm网站,直接在百度输入npm; 2,搜索:marked;找到,点击进去,找到npm install -g marked,复制: 3,安装marked包.在cmd中进入Vue脚手架的mysite文件夹中,输入npm install  marked  -D: 4,安装好以后,重启npm  run   dev; 5,在Vue文件中导入: 6,在Vue模板中导入: 7,这样就ok了.前端页面上就可以展示出来那种想要的效果了: 原文地址:https://www.cnblogs.com/zzw7

laravel迁移文件中字段方法对应的数据库类型

/* *Blueprint类中的方法方法 <-> 数据库数据类型 * */ // 数字 increments();// int(10) unsigned primarykey auto_increment bigInteger();// bigint(20) unsignedBigInteger();// bigint(20) unsigned integer();// int(11) unsignedInteger();// int(10) unsigned mediumInteger();

C# winForm中调用javascript文件中的方法

目前有很多的SNS社区或类SNS的网站,例如开心.51.校内等,但是发现大多数社区在邀请好友的时候都没有提供对QQ邮箱或者QQ空间好友列表获取的功能,不过似乎海内支持,但是网上相关QQ的文章还不是很多,希望这篇文章能给你带来一些帮助. QQ空间及邮箱登陆的校验方式: QQ空间及邮箱登陆的时候,用户输入的密码首先会被页面中的一段Js加密,然后加密过后的密码会加上验证码形成一个新的字串,接着这个新的字串被MD5(32位)加密,加密过后形成最终的密码,这就是我们为什么经常会发现我们在提交的时候我们的密