因为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;
}
}
}
赞
If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
QQ:154298438
QQ:417480759