扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
程序如下:
以下是引用片段: ===================================================== using System; using System.Collections; namespace split ...{ class mySplit ...{ [STAThread] static void Main(string[] args) ...{ string str1="",str2=""; if(args.Length != 2) ...{ Console.WriteLine("请输入要分割的字符串:"); str1 = Console.ReadLine(); Console.WriteLine("请输入分割符:"); str2 = Console.ReadLine(); Console.WriteLine(" 分割出的数据如下: "); } else ...{ str1 = args[0]; str2 = args[1]; } string[] output = null; output = split(str1,str2); for (int i=0; i < output.Length; i++) ...{ Console.WriteLine("{0}", output[i]); } Console.WriteLine(" 被分割成{0}份字符串!", output.Length); TimeSpan sp1,sp2,sp3; DateTime dt = DateTime.Now; for(int i=0; i<1000; i++) ...{ output=split(str1,str2); output=null; } sp1=DateTime.Now - dt; //用&&符分割! System.Text.RegularExpressions.Regex rg = new System.Text.RegularExpressions.Regex("&{2}"); dt = DateTime.Now; for(int j=0; j<1000; j++) ...{ output=rg.Split(str1); output=null; } sp2=DateTime.Now - dt; Console.WriteLine(" 正则式类执行时间:{0}", sp2.ToString()); Console.WriteLine("自制函数执行时间:{0}", sp1.ToString()); Console.WriteLine(" 输入回车退出程序!"); Console.Read(); } //分割函数开始 public static string[] split(string strinput, string sp) ...{ string tmp=""; int strlen=0, splen=0; int found=0; string[] rt = null; try ...{ if(strinput==null || sp==null || strinput.Length==0 || sp.Length==0) return null; //初始化一个数组列表(当做动态数组) ArrayList tmp3 = new ArrayList(); strlen = strinput.Length; splen = sp.Length; for(int i=0; i ...{ //查找分隔符 found = strinput.IndexOf(sp, i); if(found>=0) ...{ tmp = ""; //取分隔符前的字符串 tmp = strinput.Substring(i, found-i); //添加到数组列表 tmp3.Add(tmp); i = found+splen-1; } else ...{ string tmp2=""; //取最后的字符串 tmp2 = strinput.Substring(i); if(tmp2 != "") tmp3.Add(tmp2); break; } } //将 tmp3.TrimToSize(); //转换数组列表为字符串数组,并返回。 rt = (string[])tmp3.ToArray(typeof(String)); tmp3.Clear(); } catch (Exception e) ...{ //Console.WriteLine("{0}", e.Message); throw e; } return rt; } } } |
经测试,本函数比用正则式的SPLIT快一倍!
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者