您的位置:首页 > 编程语言 > C#

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

2015-01-27 16:56 246 查看
   此方法是取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();
}


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: