using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
string[] oper={"+","-","*","/","="};
string[] var = { "x", "Fa", "y", "z", "m", "Tc" };
int m = 0;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
string formular = TextBox1.Text;
string strvar = "";
string[] arr3=new string[10];
GetVar(formular, oper, var,arr3);
for (int i = 0; i < arr3.Length; i++)
{
if (arr3[i] != null && arr3[i] != "")
{
strvar += arr3[i] + ",";
}
}
strvar = strvar.Substring(0, strvar.LastIndexOf(","));
this.TextBox2.Text = strvar;
}
/// <summary>
///获取变量
/// </summary>
/// <param name="str">公式</param>
/// <param name="arr1">操作符</param>
/// <param name="arr2">变量</param>
/// <returns></returns>
public void GetVar(string str,string[] arr1,string[] arr2,string[] arr3)
{
arr3 = new string[10];
for(int i=0;i<str.Length;i++)
{
for (int j = 0; j < arr1.Length;j++ )
{
if (str.Substring(i,1) == arr1[j])
{
string befstr = str.Substring(0, i);
string aftstr = str.Substring(i+1,str.Length-befstr.Length-1);
for (int x = 0; x < arr2.Length; x++)
{
if (befstr == arr2[x])
{
arr3[m] = befstr;
m++;
}
}
str = aftstr;
GetVar(str, arr1, arr2, arr3);
}
else
{
continue;
}
}
}
}
}
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
string[] oper={"+","-","*","/","="};
string[] var = { "x", "Fa", "y", "z", "m", "Tc" };
int m = 0;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
}
protected void Button2_Click(object sender, EventArgs e)
{
string formular = TextBox1.Text;
string strvar = "";
string[] arr3=new string[10];
GetVar(formular, oper, var,arr3);
for (int i = 0; i < arr3.Length; i++)
{
if (arr3[i] != null && arr3[i] != "")
{
strvar += arr3[i] + ",";
}
}
strvar = strvar.Substring(0, strvar.LastIndexOf(","));
this.TextBox2.Text = strvar;
}
/// <summary>
///获取变量
/// </summary>
/// <param name="str">公式</param>
/// <param name="arr1">操作符</param>
/// <param name="arr2">变量</param>
/// <returns></returns>
public void GetVar(string str,string[] arr1,string[] arr2,string[] arr3)
{
arr3 = new string[10];
for(int i=0;i<str.Length;i++)
{
for (int j = 0; j < arr1.Length;j++ )
{
if (str.Substring(i,1) == arr1[j])
{
string befstr = str.Substring(0, i);
string aftstr = str.Substring(i+1,str.Length-befstr.Length-1);
for (int x = 0; x < arr2.Length; x++)
{
if (befstr == arr2[x])
{
arr3[m] = befstr;
m++;
}
}
str = aftstr;
GetVar(str, arr1, arr2, arr3);
}
else
{
continue;
}
}
}
}
}
运行到这一步if (str.Substring(i,1) == arr1[j])
时出错?望高手解答啊?
7 个解决方案
#1
加个断点,看下str是什么,是否为空?
#2
if(str.Length>i)
str=str.Substring(i,1) ;
str=str.Substring(i,1) ;
#3
非常感谢你的回答,现在又在
strvar = strvar.Substring(0, strvar.LastIndexOf(","));
出现问题,
长度不能小于 0。
参数名: length
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 长度不能小于 0。
参数名: length
源错误:
行 47:
行 48:
行 49: strvar = strvar.Substring(0, strvar.LastIndexOf(","));
行 50: this.TextBox2.Text = strvar;
行 51: }
strvar = strvar.Substring(0, strvar.LastIndexOf(","));
出现问题,
长度不能小于 0。
参数名: length
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 长度不能小于 0。
参数名: length
源错误:
行 47:
行 48:
行 49: strvar = strvar.Substring(0, strvar.LastIndexOf(","));
行 50: this.TextBox2.Text = strvar;
行 51: }
#4
if(strvar.LastIndexOf(",") > -1)
strvar = strvar.Substring(0, strvar.LastIndexOf(","));
strvar = strvar.Substring(0, strvar.LastIndexOf(","));
#5
再次谢谢你的答复,现在运行没有错误,但是我预期是要获取到公式中的变量,如2*x+sin(3*x+y)运行呢后把x,y获取出来赋值,但现在运行后得不到变量?谢谢诶
#6
现在运行后的结果是原始字符串string strvar = "";的值,以下这个循环就没有执行
if (arr3[i] != null && arr3[i] != "")
{
strvar += arr3[i] + ",";
}
if (arr3[i] != null && arr3[i] != "")
{
strvar += arr3[i] + ",";
}
#7
怎么解决啊,着急啊!!!!!!
#1
加个断点,看下str是什么,是否为空?
#2
if(str.Length>i)
str=str.Substring(i,1) ;
str=str.Substring(i,1) ;
#3
非常感谢你的回答,现在又在
strvar = strvar.Substring(0, strvar.LastIndexOf(","));
出现问题,
长度不能小于 0。
参数名: length
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 长度不能小于 0。
参数名: length
源错误:
行 47:
行 48:
行 49: strvar = strvar.Substring(0, strvar.LastIndexOf(","));
行 50: this.TextBox2.Text = strvar;
行 51: }
strvar = strvar.Substring(0, strvar.LastIndexOf(","));
出现问题,
长度不能小于 0。
参数名: length
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.ArgumentOutOfRangeException: 长度不能小于 0。
参数名: length
源错误:
行 47:
行 48:
行 49: strvar = strvar.Substring(0, strvar.LastIndexOf(","));
行 50: this.TextBox2.Text = strvar;
行 51: }
#4
if(strvar.LastIndexOf(",") > -1)
strvar = strvar.Substring(0, strvar.LastIndexOf(","));
strvar = strvar.Substring(0, strvar.LastIndexOf(","));
#5
再次谢谢你的答复,现在运行没有错误,但是我预期是要获取到公式中的变量,如2*x+sin(3*x+y)运行呢后把x,y获取出来赋值,但现在运行后得不到变量?谢谢诶
#6
现在运行后的结果是原始字符串string strvar = "";的值,以下这个循环就没有执行
if (arr3[i] != null && arr3[i] != "")
{
strvar += arr3[i] + ",";
}
if (arr3[i] != null && arr3[i] != "")
{
strvar += arr3[i] + ",";
}
#7
怎么解决啊,着急啊!!!!!!