只有当整个文本都被括号包围时,我才想删除括号。例如:
(text (text) text)
需要转换为:
text (text) text
我有一个非常简单的检查:
value = (value [0] == '(' && value [value .Length - 1] == ')') ? value.Substring(1, value .Length - 2) : value;
但它失败了,并错误地删除了这些字符串的括号:
(text (text) ) text (text)
谁能说出一种处理所有情况的方法? OK
也可以使用正则表达式。
请注意,括号是平衡的。例如,这种情况是不可能的:
( text ( text )
最佳答案
使用一个简单的循环进行测试,如果它对删除“有效”,则删除第一个和最后一个:
bool isValid = value[0] == '(' && value[value.Length - 1] == ')';
int i = 1;
int c = 0;
for(; isValid && c >= 0 && i < value.Length - 1; i++)
{
if(value[i] == '(')
c++;
else if(value[i] == ')')
c--;
}
if(isValid && i == (value.Length - 1) && c == 0)
value = value.Substring(1, value.Length - 2);
关于c# - 如何仅在整个文本被括号包围时才删除括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32231487/