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

C#使用正则表达式检查数学公式的正确性

2018-01-10 20:24 501 查看
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace businessLogicLib
{
/// <summary>
/// 2018-1-10 萧頔
/// </summary>
public class FormulaSettingBll
{
public static bool check(string str)
{
if (str.Equals(""))
{
return false;
}
//如果有连续的符号的话返回false
if (Regex.IsMatch(str, @"[+-/\\*]{2,}"))
{

return false;
}

//如果出现连续的括号的话返回false
if (Regex.IsMatch(str,@"[\(\)]{2,}"))
{
return false;
}

//如果左括号后面出现+*/符号的时候返回false
if (Regex.IsMatch(str, @"\([+/\\*]+"))
{
return false;
}

//如果右括号后面出现数字或者没有出现+-*/的时候返回false
if (Regex.IsMatch(str, @"\)[^+-/\\*]"))
{
return false;
}

//如果左括号前面没有出现+-*/的时候返回false
if (Regex.IsMatch(str, @"[^+-/\\*]+\("))
{
return false;
}

//如果右括号前面出现+-*/的时候返回fasle
if (Regex.IsMatch(str, @"[+-/\\*]+\)"))
{
return false;
}

//递归检查括号是否成对出现
char item;
Stack s = new Stack();
foreach(char i in str)
{
item = i;
if(item == '(')
{
s.Push('(');
}
else if(item == ')')
{
if(s.Count > 0)
{
s.Pop();
}
else
{
return false;
}
}
}
if(s.Count != 0)
{
return false;
}
return true;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: