网页教学网
 当前位置: 网页教学网 >> 网络编程 >> ASP.NET编程技术 >> 一个使用C#自写的SPLIT函数的代码
[ HTML ] [ FW ] [ DW ] [ FP ] [ JS ] [ XML ] [ CSS ] [ 图象 ] [ FLASH ] [ .NET ] [ ASP ] [ JSP ] [ PHP ] [ 数据 ] [ 系统 ] [ 安全 ] [ 素材 ] [ 建站 ] [ 主机 ] [ 入门 ] [ 技巧 ]

一个使用C#自写的SPLIT函数的代码

http://www.webjx.com  更新日期:2007-10-16 16:21  出处:网页教学网  作者:站长整理

  因为C#的SPLIT局限性比较大,只能用字符或字符数组来做分隔符。没有提供像VB一样的可以用字符串做分割符的SPLIT函数,这样在写程序过程中,少了很多便利。  于是,就写了如下一个函数来方便自己编程。

  程序如下:

  =====================================================
  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;
  }
  }
  //将动态数组的维数设置成实际存在的元素个数,因为数组列表是以16的倍数递增维数的
  tmp3.TrimToSize();
  //转换数组列表为字符串数组,并返回。
  rt = (string[])tmp3.ToArray(typeof(String));
  tmp3.Clear();
  }
  catch (Exception e)
  ...{
  //Console.WriteLine("{0}", e.Message);
  throw e;
  }
  return rt;
  }
  }
  }

  经测试,本函数比用正则式的SPLIT快一倍!

关键词:C#,SPLIT函数
推荐给好友】【关闭】【收藏本文
最新五条评论
查看全部评论
评论总数 0
您的评论
用户名: 新注册) 密 码: 匿名:
·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为