c++的, 不检查括号匹配,只处理小括号 不能含有 空格 : ;
void RemoveRedundancyBrackets(char* szSrc)
{
if (NULL == szSrc)
return;
int len = strlen(szSrc) - 1;
int i;
int j;
for (i = 1; i < len; i++)
{
if (')' == szSrc[i])
{
for (j = i - 1; j > 0; j--)
{
if ('(' == szSrc[j])
{
if (')' == szSrc[i + 1] && '(' == szSrc[j - 1])
{
szSrc[i] = ' ';
szSrc[j] = ' ';
}
else
{
szSrc[i] = ':';
szSrc[j] = ';';
}
break;
}
}
}
}
if (')' == szSrc[len])
{
j = 1;
for (i = len - 1; i >= 0; i--)
{
if ('(' == szSrc[i])
{
j = i;
break;
}
}
if (j == 0)
{
szSrc[0] = ' ';
szSrc[len] = '\0';
}
}
char *buffer = new char[len + 2];
strcpy(buffer, szSrc);
i = 0;
j = 0;
while('\0' != buffer[i])
{
if (':' == buffer[i])
{
szSrc[j++] = ')';
}
else if (';' == buffer[i])
{
szSrc[j++] = '(';
}
else if (' ' != buffer[i])
{
szSrc[j++] = buffer[i];
}
i++;
}
szSrc[j] = '\0';
delete[] buffer;
}