C#中split函数的实现原理
相信很多小伙伴跟我一样初入C#很想了解下Split函数其中的实现原理,具体实现程序如下
输出结果如上图所示
具体实现代码如下。
using System;
using System.Collections;
namespace split
{class mySplit{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.Write("{0}"+" ", output[i]);}Console.WriteLine("被分割成{0}份字符串!", output.Length);DateTime dt = DateTime.Now;for (int i = 0; i < 1000; i++){output = split(str1, str2);output = null;}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;}Console.ReadKey();} //分割函数开始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 < strlen; 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;}}
}
本文发布于:2024-02-02 00:33:25,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170681064240232.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |