熟正则表达式的兄弟帮忙写段代码. 你的公式如果是固定的话那就多做几个textbox然后让用户输入值只要检测值的合法性就可以了不用分析整个表达式 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 trystring xxx="( 基本底薪 + 年资 + 奖金 - 食宿费 )/168*( 事假小时 + 病假小时 ) ";string[] yyy= System.Text.RegularExpressions.Regex.Split(xxx,@"\s*([(+-/*)])\s*");for(int i=0; i < yyy.Length; i++) Console.WriteLine("{0}:{1}", i, yyy[i]); 先replace,再split:string strValue="( 基本底薪 + 年资 + 奖金 - 食宿费 )/168*( 事假小时 + 病假小时 ) ";strValue.Replace("(","|(|");strValue.Replace(")","|)|");strValue.Replace("+","|+|");strValue.Replace("-","|-|");strValue.Replace("*","|*|");strValue.Replace("/","|/|");string[] strArrValue=strValue.Split('|');再把为空的strArrValue[i]去除掉! 思归的应该是分割成这样:基本底薪年资奖金食宿费168事假小时病假小时([\(+\-*/\)=]{1})|([^\(+\-*/\)=]+)这个则可以分割成这样:(基本底薪+年资+奖金-食宿费)/168*(事假小时+病假小时)不过要用Mathes来获取。 请试过再说,别乱猜测,输出F:\csharp>TestFormat0:1:(2:基本底薪3:+4:年资5:+6:奖金7:-8:食宿费9:)10:11:/12:16813:*14:15:(16:事假小时17:+18:病假小时19:)20: trystring xxx="( 基本底薪 + 年资 + 奖金 - 食宿费 )/168*( 事假小时 + 病假小时 ) ";string[] yyy= System.Text.RegularExpressions.Regex.Split(xxx,@"\s*([(+-/*)])\s*");for(int i=0; i < yyy.Length; i++) Console.WriteLine("{0}:{1}", i, yyy[i]); string xxx="( 基本底薪 + 年资 + 奖金 - 食宿费 )/168*( 事假小时 + 病假小时 ) ";Regex rex = new Regex(@"([(+-/*)]|[^(+-/*)\s]+)");MatchCollection mc = rex.Matches(xxx);string[] yyy = new string[mc.Count];for(int i=0; i < yyy.Length; i++){ yyy[i] = mc[i].Groups[1].Value; Console.WriteLine("{0}:{1}", i, yyy[i]);} 请试过再说,别乱猜测,输出F:\csharp>TestFormat0:1:(2:基本底薪3:+4:年资5:+6:奖金7:-8:食宿费9:)10:11:/12:16813:*14:15:(16:事假小时17:+18:病假小时19:)20:咦,这是怎么做到的?另外,我测试的时候"-"要转义,否则会报错啊。 mainfrom的相关操作 WPF中如何实现Combobox只能输入数字,Backspace 求一个随机生成的无重复的十位数 ORA-01460:转换请求无法实现或不合理 找不见 Dot Net FrameWork 配置工具 高手进来解释一下 remoting传递的对象都会自动地经过序列化和反序列化处理吗??? 请教高人:文本框中怎么绘制图形? 请问只读属性可不可以序列化?如果可以,要怎样做? 求两个源代码 求助:无法删除文件,提示另一进程在使用 怎样得知自定义控件是否处于设计时状态(C# Win Form)?
string[] yyy= System.Text.RegularExpressions.Regex.Split(xxx,@"\s*([(+-/*)])\s*");
for(int i=0; i < yyy.Length; i++)
Console.WriteLine("{0}:{1}", i, yyy[i]);
string strValue="( 基本底薪 + 年资 + 奖金 - 食宿费 )/168*( 事假小时 + 病假小时 ) ";
strValue.Replace("(","|(|");
strValue.Replace(")","|)|");
strValue.Replace("+","|+|");
strValue.Replace("-","|-|");
strValue.Replace("*","|*|");
strValue.Replace("/","|/|");
string[] strArrValue=strValue.Split('|');
再把为空的strArrValue[i]去除掉!
年资
奖金
食宿费
168
事假小时
病假小时([\(+\-*/\)=]{1})|([^\(+\-*/\)=]+)
这个则可以分割成这样:
(
基本底薪
+
年资
+
奖金
-
食宿费
)
/
168
*
(
事假小时
+
病假小时
)不过要用Mathes来获取。
0:
1:(
2:基本底薪
3:+
4:年资
5:+
6:奖金
7:-
8:食宿费
9:)
10:
11:/
12:168
13:*
14:
15:(
16:事假小时
17:+
18:病假小时
19:)
20:
string[] yyy= System.Text.RegularExpressions.Regex.Split(xxx,@"\s*([(+-/*)])\s*");
for(int i=0; i < yyy.Length; i++)
Console.WriteLine("{0}:{1}", i, yyy[i]);
string xxx="( 基本底薪 + 年资 + 奖金 - 食宿费 )/168*( 事假小时 + 病假小时 ) ";Regex rex = new Regex(@"([(+-/*)]|[^(+-/*)\s]+)");
MatchCollection mc = rex.Matches(xxx);
string[] yyy = new string[mc.Count];
for(int i=0; i < yyy.Length; i++)
{
yyy[i] = mc[i].Groups[1].Value;
Console.WriteLine("{0}:{1}", i, yyy[i]);
}
0:
1:(
2:基本底薪
3:+
4:年资
5:+
6:奖金
7:-
8:食宿费
9:)
10:
11:/
12:168
13:*
14:
15:(
16:事假小时
17:+
18:病假小时
19:)
20:
咦,这是怎么做到的?另外,我测试的时候"-"要转义,否则会报错啊。