private static int GetContainerTokenEndIndex(string src, string begins, string ends, out bool success)
{
if (!src.StartsWith(begins))
{
success = false;
return -1;
}
int x = 1;
int index = -1;
for (int i = 1; i < src.Length; i++)
{
x += src[i] == ends[0] ? -1 :
src[i] == begins[0] ? 1 :
0;
if (x == 0)
{
index = i;
break;
}
}
//index == -1で終わるのはシグネチャを書き間違えてるケース等
success = (index != -1);
return index;
}