zoukankan      html  css  js  c++  java
  • 提取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();
            }

      

  • 相关阅读:
    通过Relect反射方法创建对象,获得对象的方法,输出对象信息
    Spring框架中获取连接池常用的四种方式
    Spring框架的七大模块
    Java线程池的四种创建方式
    递归算法
    将字符串反转的 Java 方法
    [String]split()方法
    [String] intern()方法
    案例>>>用绝对值的方法打印出菱形
    数组的简单理解
  • 原文地址:https://www.cnblogs.com/cang/p/4253425.html
Copyright © 2011-2022 走看看