📄 framemath.cs
字号:
namespace FrameCountry.FrameBuild
{
using FrameCountry;
using System;
public class FrameMath
{
private string calcErrorInfo = "";
private string ClassAlias = "MT";
private FrameCity frameCity = new FrameCity();
private string Calc(string calcString)
{
string functionAlias = "02";
if (calcString.IndexOf("(") == -1)
{
return this.SimpleCalculate(calcString);
}
int index = calcString.IndexOf("(");
while (calcString.IndexOf("(", (int) (index + 1)) != -1)
{
index = calcString.IndexOf("(", (int) (index + 1));
}
int num2 = calcString.IndexOf(")", (int) (index + 1));
if (num2 == -1)
{
this.calcErrorInfo = this.frameCity.DealErrorInfo(this.ClassAlias, functionAlias, "括弧不匹配!");
return "error";
}
return this.Calc(calcString.Replace(calcString.Substring(index, (num2 - index) + 1), this.Calc(calcString.Substring(index + 1, (num2 - index) - 1))));
}
public bool Calculate(string calcString, ref string calcResult, ref string ErrorInfo)
{
string functionAlias = "01";
calcResult = this.Calc(calcString).Replace("_", "-");
if (calcResult == "error")
{
ErrorInfo = this.frameCity.DealErrorInfo(this.ClassAlias, functionAlias, "◇" + this.calcErrorInfo);
return false;
}
return true;
}
public string ChangeDateTimeToFillStyle(DateTime dealDateTime)
{
int num = ((dealDateTime.Year * 0x2710) + (dealDateTime.Month * 100)) + dealDateTime.Day;
int num2 = ((0xf4240 + (dealDateTime.Hour * 0x2710)) + (dealDateTime.Minute * 100)) + dealDateTime.Second;
return (num.ToString().Substring(2, 6) + num2.ToString().Substring(1, 6));
}
public DateTime ChangeFillStyleToDateTime(string strFileStyle)
{
return DateTime.Parse("20" + strFileStyle.Substring(0, 2) + "-" + strFileStyle.Substring(2, 2) + "-" + strFileStyle.Substring(4, 2) + " " + strFileStyle.Substring(6, 2) + ":" + strFileStyle.Substring(8, 2) + ":" + strFileStyle.Substring(10, 2));
}
private string cutDoc(string strnum)
{
try
{
int index = strnum.IndexOf(".");
if (index == -1)
{
return strnum;
}
return strnum.Substring(0, index + 3);
}
catch
{
return strnum;
}
}
public string GenerateCheckCode(int codeCount)
{
string str = string.Empty;
Random random = new Random();
for (int i = 0; i < codeCount; i++)
{
char ch;
int num = random.Next();
if ((num % 2) == 0)
{
ch = (char) (0x30 + ((ushort) (num % 10)));
}
else
{
ch = (char) (0x41 + ((ushort) (num % 0x1a)));
}
str = str + ch.ToString();
}
return str;
}
private string SimpleCalculate(string simplecalcString)
{
string functionAlias = "03";
char[] anyOf = new char[] { '*', '/', '%' };
char[] chArray2 = new char[] { '+', '-' };
char[] chArray3 = new char[] { '*', '/', '%', '+', '-' };
string str2 = "+-*/()%△";
simplecalcString = "△" + simplecalcString;
int index = simplecalcString.IndexOf("-");
if (index > 0)
{
for (int i = 0; i < str2.Length; i++)
{
char ch = str2[i];
if (ch.ToString() == simplecalcString.Substring(index - 1, 1))
{
simplecalcString = simplecalcString.Substring(0, index) + "_" + simplecalcString.Substring(index + 1, (simplecalcString.Length - index) - 1);
}
}
}
index = simplecalcString.IndexOf("+");
if (index > 0)
{
for (int j = 0; j < str2.Length; j++)
{
char ch2 = str2[j];
if (ch2.ToString() == simplecalcString.Substring(index - 1, 1))
{
simplecalcString = simplecalcString.Substring(0, index) + simplecalcString.Substring(index + 1, (simplecalcString.Length - index) - 1);
}
}
}
simplecalcString = simplecalcString.Substring(1, simplecalcString.Length - 1);
simplecalcString = simplecalcString.Replace("--", "+");
simplecalcString = simplecalcString.Replace("+-", "-");
simplecalcString = simplecalcString.Replace("-_", "+");
simplecalcString = simplecalcString.Replace("_-", "+");
simplecalcString = simplecalcString.Replace("+_", "-");
simplecalcString = simplecalcString.Replace("_+", "-");
simplecalcString = simplecalcString + "△";
int num2 = simplecalcString.IndexOfAny(anyOf);
int num3 = simplecalcString.IndexOfAny(chArray2);
double num9 = 0.0;
string str3 = simplecalcString;
try
{
int num;
int num5;
if (num2 > -1)
{
num = num2;
int startIndex = num - 1;
num5 = num + 1;
while (str2.IndexOf(simplecalcString.Substring(startIndex, 1)) == -1)
{
startIndex--;
if (startIndex == -1)
{
break;
}
}
while (str2.IndexOf(simplecalcString.Substring(num5, 1)) == -1)
{
num5++;
}
simplecalcString = simplecalcString.Replace("_", "-");
simplecalcString = simplecalcString.Replace("--", "+");
simplecalcString = simplecalcString.Replace("+-", "-");
if (simplecalcString.Substring(num, 1) == "*")
{
num9 = double.Parse(simplecalcString.Substring(startIndex + 1, (num - startIndex) - 1).Replace("_", "-")) * double.Parse(simplecalcString.Substring(num + 1, (num5 - num) - 1).Replace("_", "-"));
}
else if (simplecalcString.Substring(num, 1) == "/")
{
if (double.Parse(simplecalcString.Substring(num + 1, (num5 - num) - 1).Replace("_", "-")) == 0.0)
{
throw new Exception("错误:除数为0!");
}
num9 = double.Parse(simplecalcString.Substring(startIndex + 1, (num - startIndex) - 1).Replace("_", "-")) / double.Parse(simplecalcString.Substring(num + 1, (num5 - num) - 1).Replace("_", "-"));
}
else if (simplecalcString.Substring(num, 1) == "%")
{
if (double.Parse(simplecalcString.Substring(num + 1, (num5 - num) - 1).Replace("_", "-")) == 0.0)
{
throw new Exception("错误:除数为0");
}
num9 = double.Parse(simplecalcString.Substring(startIndex + 1, (num - startIndex) - 1).Replace("_", "-")) % double.Parse(simplecalcString.Substring(num + 1, (num5 - num) - 1).Replace("_", "-"));
}
if (num9 > 0.0)
{
str3 = simplecalcString.Substring(0, startIndex + 1) + num9.ToString() + simplecalcString.Substring(num5, simplecalcString.Length - num5);
}
else
{
str3 = simplecalcString.Substring(0, startIndex + 1) + "_" + num9.ToString().Substring(1, num9.ToString().Length - 1) + simplecalcString.Substring(num5, simplecalcString.Length - num5);
}
}
else if (num3 > -1)
{
num = num3;
num5 = num + 1;
while (str2.IndexOf(simplecalcString.Substring(num5, 1)) == -1)
{
num5++;
}
simplecalcString = simplecalcString.Replace("_", "-");
simplecalcString = simplecalcString.Replace("--", "+");
simplecalcString = simplecalcString.Replace("+-", "-");
if (simplecalcString.Substring(num, 1) == "+")
{
num9 = double.Parse(simplecalcString.Substring(0, num).Replace("_", "-")) + double.Parse(simplecalcString.Substring(num + 1, (num5 - num) - 1).Replace("_", "-"));
}
else
{
num9 = double.Parse(simplecalcString.Substring(0, num).Replace("_", "-")) - double.Parse(simplecalcString.Substring(num + 1, (num5 - num) - 1).Replace("_", "-"));
}
if (num9 > 0.0)
{
str3 = num9.ToString() + simplecalcString.Substring(num5, simplecalcString.Length - num5);
}
else
{
str3 = "_" + num9.ToString().Substring(1, num9.ToString().Length - 1) + simplecalcString.Substring(num5, simplecalcString.Length - num5);
}
}
else
{
simplecalcString = simplecalcString.Replace("_", "-");
simplecalcString = simplecalcString.Replace("--", "");
simplecalcString = simplecalcString.Replace("+", "");
simplecalcString = simplecalcString.Replace("+-", "-");
str3 = double.Parse(simplecalcString.Substring(0, simplecalcString.Length - 1)).ToString() + "△";
}
}
catch (Exception exception)
{
this.calcErrorInfo = this.frameCity.DealErrorInfo(this.ClassAlias, functionAlias, exception.Message);
str3 = "error△";
}
str3 = str3.Substring(0, str3.Length - 1);
if (str3.Substring(1, str3.Length - 1).IndexOfAny(chArray3) > -1)
{
return this.SimpleCalculate(str3);
}
return str3;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -