C#中字符串如何转化为单个字符!!!!
我想在文本框中输入一个数学表达式,然后把这个表达式中的操作数和操作符分别入栈,请高手指点!!!!...
我想在文本框中输入一个数学表达式,然后把这个表达式中的操作数和操作符分别入栈,请高手指点!!!!
展开
4个回答
展开全部
使用正则表达式,
匹配数字用\d+
匹配操作符 用\w{1}
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"\d+");
System.Text.RegularExpressions.MatchCollection mc = regex.Matches(text.Text);
System.Text.RegularExpressions.Match中的Value属性就是匹配出来的数字.
匹配数字用\d+
匹配操作符 用\w{1}
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"\d+");
System.Text.RegularExpressions.MatchCollection mc = regex.Matches(text.Text);
System.Text.RegularExpressions.Match中的Value属性就是匹配出来的数字.
展开全部
先用
for+ substring() 来取出每一个字符
然后 判断 asc码 就可以
接分
for+ substring() 来取出每一个字符
然后 判断 asc码 就可以
接分
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个方法很实用,可以借鉴一下:
string str = ""; //数学表达式
foreach(char ch in str)
{
if(char.IsNumber(ch))
{
//操作数入栈
}else
{
//操作符入栈
}
}
string str = ""; //数学表达式
foreach(char ch in str)
{
if(char.IsNumber(ch))
{
//操作数入栈
}else
{
//操作符入栈
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
string str = "2+32-10*5/2";
string strSymbol = "+-*/";
int symbolCount = 0;
if (str.IndexOf("+") > 0) symbolCount++;
if (str.IndexOf("-") > 0) symbolCount++;
if (str.IndexOf("*") > 0) symbolCount++;
if (str.IndexOf("/") > 0) symbolCount++;
string[] strMaths = new string[symbolCount + 1];//这里存放数
string[] strSymbols = new string[symbolCount];//这里存放符号
int strIndex = 0;
for (int i = 0; i < strMaths.Length; i++)
{
for (int j = strIndex; j < str.Length; j++)
{
string strTmp = str.Substring(j, 1);
if (strSymbol.IndexOf(strTmp) > -1)
{
strSymbols[i] = strTmp;
strIndex++;
break;
}
else
{
strMaths[i] += strTmp;
strIndex++;
}
}
}
string strSymbol = "+-*/";
int symbolCount = 0;
if (str.IndexOf("+") > 0) symbolCount++;
if (str.IndexOf("-") > 0) symbolCount++;
if (str.IndexOf("*") > 0) symbolCount++;
if (str.IndexOf("/") > 0) symbolCount++;
string[] strMaths = new string[symbolCount + 1];//这里存放数
string[] strSymbols = new string[symbolCount];//这里存放符号
int strIndex = 0;
for (int i = 0; i < strMaths.Length; i++)
{
for (int j = strIndex; j < str.Length; j++)
{
string strTmp = str.Substring(j, 1);
if (strSymbol.IndexOf(strTmp) > -1)
{
strSymbols[i] = strTmp;
strIndex++;
break;
}
else
{
strMaths[i] += strTmp;
strIndex++;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询