转载请标明:舒小龙 http://www.cnblogs.com/shuxiaolong/articles/2901784.html

什么都不说,直接贴测试类代码:

 1         [Test]
 2         public static void TestCompute()
 3         {
 4             const bool result = 12 + 13 == 14 + 11;
 5             Console.WriteLine(result);
 6
 7             //这个作为 预运算,作为加载 类,函数 的.Net 底层开销——不计算在执行时间内
 8             string none = ComputeHelper.Compute("1+(1+1)").Value + "\r\n";
 9             Console.WriteLine("预运算: " + none);
10
11
12             DateTime dt1 = DateTime.Now;
13             string sTemp = string.Empty;
14
15             sTemp += ComputeHelper.Compute("(2+8)*(1+2+77+(12+8))").Value + "\r\n";
16             sTemp += ComputeHelper.Compute("345*657").Value + "\r\n";
17             sTemp += ComputeHelper.Compute("2+(235*(2+3))").Value + "\r\n";
18             sTemp += ComputeHelper.Compute("123+65+234+132+432").Value + "\r\n";
19             sTemp += ComputeHelper.Compute("1+1+1+1+1").Value + "\r\n";
20             sTemp += ComputeHelper.Compute("123*654*907").Value + "\r\n";
21             sTemp += ComputeHelper.Compute("(1234+987)*765").Value + "\r\n";
22             sTemp += ComputeHelper.Compute("7868*989+5678").Value + "\r\n";
23             sTemp += ComputeHelper.Compute("1234*546").Value + "\r\n";
24             sTemp += ComputeHelper.Compute("(122+5654)*(2+976)").Value + "\r\n";
25             sTemp += ComputeHelper.Compute("100-50+50-50").Value + "\r\n";
26             sTemp += ComputeHelper.Compute("False?111:222").Value + "\r\n";
27             sTemp += ComputeHelper.Compute("11111===11111").Value + "\r\n";
28             sTemp += ComputeHelper.Compute("(11111===2222)?111:222").Value + "\r\n";
29             sTemp += ComputeHelper.Compute("10-1+2-3+4-5+6").Value + "\r\n";
30             sTemp += ComputeHelper.Compute("10-1*2-3*4-5/6").Value + "\r\n";
31             sTemp += ComputeHelper.Compute("10-1*2-3*4-5/6").Value + "\r\n";
32             sTemp += ComputeHelper.Compute("\"QWERTYUIOP{}:\" LIKE \"%ERT%U%\"").Value + "\r\n";
33             sTemp += ComputeHelper.Compute("(\"QWERTYUIOP{}:\" LIKE \"%ERT%U\")?1111+1111:2222+2222").Value + "\r\n";
34             sTemp += ComputeHelper.Compute("-2+5*(-2+7)").Value + "\r\n";
35             sTemp += ComputeHelper.Compute("(REPLACE(REPLACE(\"AAAAAAAAKKK\",\"K\",\"M\"),\"A\",\"B\") == \"BBBBBBBBMMM\")?\"HHHHHHHHH\":\"IIIIIIIIII\"").Value + "\r\n";
36             sTemp += ComputeHelper.Compute("3^4").Value + "\r\n";
37             sTemp += ComputeHelper.Compute("81^(1/4)").Value + "\r\n";
38
39             DateTime dt2 = DateTime.Now;
40
41             Console.WriteLine(sTemp + "计算时间:" + (dt2 - dt1).TotalMilliseconds);
42         }

运行结果:

True
预运算: 31000
226665
1177
986
5
72960894
1699065
7787130
673764
5648928
50
222
True
222
13
-4.83333333333333
-4.83333333333333
True
4444
23
HHHHHHHHH
81
3
计算时间:9.0006 (毫秒)

------------------------------------------------------------------------------------

 1         [Test]
 2         public void TestComputeBooleanExpres()
 3         {
 4             string none = ComputeHelper.ComputeBoolean("True AND False OR True").ToString();
 5             string none2 = ComputeHelper.ComputeBoolean("((REPLACE(\"CCC\",\"A\",\"B\")==\"BBB\"?200:100)>150)").ToString();
 6             Console.WriteLine("预运算: " + none + " " + none2);
 7             DateTime dt1 = DateTime.Now;
 8             string sTemp = string.Empty;
 9
10             sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\"") + "\r\n";
11             sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" AND 300>100") + "\r\n";
12             sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" AND 50>100") + "\r\n";
13             sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" AND 100>=100") + "\r\n";
14             sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" AND 100>100") + "\r\n";
15             sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" OR 100>=100 OR \"错误\"") + "\r\n";
16             //sTemp += ComputeHelper.ComputeBoolean("\"AABBCC\" LIKE \"%BB%\" AND 100>=100 AND \"错误\"") + "\r\n";
17             sTemp += ComputeHelper.ComputeBoolean("(True OR \"错误\") AND (100>200 AND 300>100)") + "\r\n";
18             sTemp += ComputeHelper.ComputeBoolean("(300>200 OR \"错误\") AND ((REPLACE(\"AAA\",\"A\",\"B\")==\"BBB\"?200:100)>150)") + "\r\n";
19
20
21             DateTime dt2 = DateTime.Now;
22
23             Console.WriteLine(sTemp + "计算时间:" + (dt2 - dt1).TotalMilliseconds);
24             Console.ReadLine();
25
26         }

运行结果:

预运算: True False
True
True
False
True
False
True
False
True
计算时间:3.0002

------------------------------------------------------------------------------------

 1         [Test]
 2         public void TestComputeBooleanList()
 3         {
 4             List<UserInfo> list = new List<UserInfo>();
 5             List<UserInfo> listUser = GetUserInfo();
 6             DateTime dt1 = DateTime.Now;
 7             ComputeExecuter executer = new ComputeExecuter("UserAge>=20 AND LEN(UserName)>=3 AND REPLACE(UserName,\"舒\",\"龙\") LIKE \"龙%龙\"", true, typeof(UserInfo), string.Empty, true, false, true);
 8             foreach (UserInfo user in listUser)
 9             {
10                 bool result = executer.ComputeBoolean(user);
11                 if (result)
12                     list.Add(user);
13             }
14             DateTime dt2 = DateTime.Now;
15             string resultStr = GetUserInfos(list);
16             Console.WriteLine(resultStr);
17             Console.WriteLine("预运算:" + (dt2 - dt1).TotalMilliseconds);
18
19             list.Clear();
20             dt1 = DateTime.Now;
21             executer = new ComputeExecuter("UserClassName == \"Y2T01\"", true, typeof(UserInfo), string.Empty, true, false, true);
22             foreach (UserInfo user in listUser)
23             {
24                 bool result = executer.ComputeBoolean(user);
25                 if (result)
26                     list.Add(user);
27             }
28             dt2 = DateTime.Now;
29             resultStr = GetUserInfos(list);
30             Console.WriteLine(resultStr);
31             Console.WriteLine("正式运算:" + (dt2 - dt1).TotalMilliseconds);
32
33             list.Clear();
34             executer = new ComputeExecuter("UserAge>=@UserAge AND UserName LIKE @UserName", true, typeof(UserInfo), string.Empty, true, false, true);
35             dt1 = DateTime.Now;
36             IgnoreHashtable ht = new IgnoreHashtable {{"@UserAge", 20}, {"@UserName", "%舒%"}};
37             foreach (UserInfo user in listUser)
38             {
39                 bool result = executer.ComputeBoolean(user, ht);
40                 if (result)
41                     list.Add(user);
42             }
43             dt2 = DateTime.Now;
44             resultStr = GetUserInfos(list);
45             Console.WriteLine(resultStr);
46             Console.WriteLine("正式运算:" + (dt2 - dt1).TotalMilliseconds);
47
48             list.Clear();
49             dt1 = DateTime.Now;
50             ht = new IgnoreHashtable { { "@UserAge", 18 }, { "@UserName", 3 } };
51             foreach (UserInfo user in listUser)
52             {
53                 bool result = executer.ComputeBoolean(user, ht);
54                 if (result)
55                     list.Add(user);
56             }
57             dt2 = DateTime.Now;
58             resultStr = GetUserInfos(list);
59             Console.WriteLine(resultStr);
60             Console.WriteLine("正式运算:" + (dt2 - dt1).TotalMilliseconds);
61
62
63         }
64
65
66         public static List<UserInfo> GetUserInfo()
67         {
68             List<UserInfo> list = new List<UserInfo>()
69                                     {
70                                         new UserInfo("舒小龙","Y2T01001",20,Convert.ToDateTime("1989-11-27"),"Y2T01","应城市",5500),72                                         new UserInfo("陈雪琴","Y2T03002",19,Convert.ToDateTime("1990-09-01"),"Y2T03","孝感市",6000),
73                                         new UserInfo("尹华伟","Y2T04003",19,Convert.ToDateTime("1990-11-01"),"Y2T03","孝感市",12000),
74                                         new UserInfo("舒珊","G2T09001",18,Convert.ToDateTime("1992-09-18"),"G2T09","应城市",200),
75                                         new UserInfo("无窗帘","G2T09002",18,Convert.ToDateTime("1992-10-02"),"G2T09","孝昌",-300),
76                                         new UserInfo("吴文","G2T05001",18,Convert.ToDateTime("1991-02-03"),"G2T05","安陆市",4000),
77                                         new UserInfo("李欢","XG009001",20,Convert.ToDateTime("1990-01-01"),"XG009","孝感市",7000),
78                                         new UserInfo("HYS","NC008001",19,Convert.ToDateTime("1990-07-19"),"NC008","应城市",500),
79                                         new UserInfo("毛三","Y2T01001",20,Convert.ToDateTime("1989-01-01"),"Y2T01","应城市",0),
80
81                                     };
82             return list;
83         }
84
85         public static string GetUserInfos(IList<UserInfo> list)
86         {
87             if (list == null || list.Count <= 0) return string.Empty;
88             StringBuilder sb = new StringBuilder();
89             foreach (UserInfo user in list)
90                 sb.AppendLine(user.ToString());
91             return sb.ToString();
92         }

运行结果:

舒小龙    Y2T01001    20    1989-11-27 00:00:00    Y2T01    应城市    5500预运算:836.0478
舒小龙    Y2T01001    20    1989-11-27 00:00:00    Y2T01    应城市    5500
毛三    Y2T01001    20    1989-01-01 00:00:00    Y2T01    应城市    0正式运算:2.0001正式运算:3.0002正式运算:1

转载于:https://www.cnblogs.com/shuxiaolong/archive/2013/02/24/2901784.html

『算法』.Net 字符串计算算法相关推荐

  1. 『开源』一个简单的 字符串计算 算法开源

    算法开发原因: 自己一直在 配置化编程 方面努力,希望 项目复杂的功能可以用 简单的 配置来完成: 于是 在自己的网站中,使用了一个自己写的 数据库框架,为了给框架提速,于是就 想将 少于 5000 ...

  2. 拼写单词 给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符

    力扣1160. 拼写单词 给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars. 假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字 ...

  3. 大数据算法系列10:字符串检验算法

    文章目录 一. 字符串检验算法 二. 练习 2.1 面试题(输出字符串的排列组合) 2.2 POJ2262(求奇质素之和) 2.3 开门游戏 2.4 Uva106(费马大定律) 2.5 POJ3744 ...

  4. 『ML』利用K-Means聚类算法对未标注数据分组——《机器学习实战》学习笔记(Ch10)

    本节用Python实现K-Means算法,对未标注的数据进行聚类. 在做完聚类后,如何对于聚类结果进行评估?请看 用Python实现聚类效果的评估(轮廓系数.互信息) 导航 K-Means简介 代码实 ...

  5. hmacsha256是对称算法吗_HMAC-SHA256签名计算算法

    我正在尝试使用HMAC-SHA256算法创建签名,这是我的代码.我正在使用美国ASCII编码. final Charset asciiCs = Charset.forName("US-ASC ...

  6. Algorithm:C++语言实现之字符串相关算法(字符串的循环左移、字符串的全排列、带有同个字符的全排列、串匹配问题的BF算法和KMP算法)

    Algorithm:C++语言实现之字符串相关算法(字符串的循环左移.字符串的全排列.带有同个字符的全排列.串匹配问题的BF算法和KMP算法) 目录 一.字符串的算法 1.字符串的循环左移 2.字符串 ...

  7. C++反转字符串的算法(附完整源码)

    C++反转字符串的算法 C++反转字符串的算法完整源码(定义,实现,main函数测试) C++反转字符串的算法完整源码(定义,实现,main函数测试) #include<iostream> ...

  8. java中怎么计算算法的时间复杂度_算法的时间复杂度和空间复杂度计算

    一.算法的时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间量度.记作:T(n) ...

  9. [转]文本相似性算法:simhash/minhash/余弦算法

    数据挖掘之lsh(局部敏感hash) minhash.simhash 在项目中碰到这样的问题: 互联网用户每天会访问很多的网页,假设两个用户访问过相同的网页,说明两个用户相似,相同的网页越多,用户相似 ...

最新文章

  1. 想学Python?那这套教程再适合你不过了!!
  2. PNAS:利用long-read生成个人转录组
  3. 关于pycharm右键只能选择run Unit不能直接run的解决方法
  4. 谷歌退出后百度首发财报 李彦宏称获益不少(转)
  5. 进入Windows的世界
  6. 两年前觉得这很难那很难的人,现在觉得更难了
  7. 前端学习(2464):vue中 slot
  8. 深入浅出VC++串口编程--基于控件
  9. C# 对称算法,加密解密类
  10. 深度学习超参数简单理解:learning rate,weight decay和momentum
  11. python学习手册笔记——29.运算符重载
  12. c语言程序游戏例子,C语言游戏编写例子.doc
  13. Win7 配置 Git 客户端 图文详解
  14. 华硕K43TK光驱改硬盘教程
  15. 精灵图案例-拼出自己名字
  16. 重启防火墙(iptables)命令#service iptable restart失效
  17. 哈希表Hash与JAVA集合类Map及其方法put()、getOrDefault()、keySet()、get()
  18. Qt - 驾校科目-考试系统-窗口交互
  19. Asp.Net MVC学习记录之“一个实体对象不能由多个 IEntityChangeTracker 实例引用”
  20. 我的手工制作PCB板

热门文章

  1. 基于ADuC848的智能电压监视仪
  2. 掌财社:股票交割日是什么意思?
  3. 2014 计算机一级 试题,2014年全国计算机一级考试选择题试题与详细答案
  4. 新装EVE-NG使用wireshark出现connection abandoned
  5. 公里与英里的换算c语言函数_一万公里是极限吗?全合成机油最多能跑多远?...
  6. 怎么创建html元素节点,怎么用DOM创建a节点
  7. visual assist x_1.2kg华硕灵耀X逍遥体验:4K OLED翻转屏+11代i7处理器
  8. 调试JavaScript/VB Script脚本程序(Wscript篇)
  9. 手机应用推广必备发布渠道【安卓渠道汇】
  10. 关于Symantec(赛门铁克)认证服务