3 回答
TA贡献1785条经验 获得超8个赞
尝试简单的字符串索引和子字符串操作,如下所示:
string s = "2X+4+(2+2X+4X)+4";
int beginIndex = s.IndexOf("(");
int endIndex = s.IndexOf(")");
string firstPart = s.Substring(0,beginIndex-1);
string secondPart = s.Substring(endIndex+1,s.Length-endIndex-1);
var result = firstPart + secondPart;
解释:
获取第一个索引
(
获取第一个索引
)
创建两个子字符串,第一个是 1 索引之前
beginIndex
删除数学符号,如 +第二个是 post
endIndex
,直到字符串长度连接两个字符串顶部得到最终结果
TA贡献1821条经验 获得超4个赞
尝试正则表达式方法:
var str = "(1x+2)-2X+4+(2+2X+4X)+4+(3X+3)";
var regex = new Regex(@"\(\S+?\)\W?");//matches '(1x+2)-', '(2+2X+4X)+', '(3X+3)'
var result = regex.Replace(str, "");//replaces parts above by blank strings: '2X+4+4+'
result = new Regex(@"\W$").Replace(result, "");//replaces last operation '2X+4+4+', if needed
//2X+4+4
TA贡献2041条经验 获得超4个赞
试试这个:
var str = "(7X+2)+2X+4+(2+2X+(3X+3)+4X)+4+(3X+3)";
var result =
str
.Aggregate(
new { Result = "", depth = 0 },
(a, x) =>
new
{
Result = a.depth == 0 && x != '(' ? a.Result + x : a.Result,
depth = a.depth + (x == '(' ? 1 : (x == ')' ? -1 : 0))
})
.Result
.Trim('+')
.Replace("++", "+");
//result == "2X+4+4"
这处理嵌套、前导和尾随括号。
- 3 回答
- 0 关注
- 168 浏览
添加回答
举报