.NET实用扩展方法详解
持续更新的.NET实用扩展方法,具体内容如下
1.字符串转换为可空数值类型(int,long,float...类似)
//////将字符串转换成32位整数,转换失败返回null /// ///转换的字符串 /// 转换之后的整数,或null publicstaticint?TryParseToInt32(thisstringstr) { if(string.IsNullOrWhiteSpace(str)) returnnull; varresult=0; if(int.TryParse(str,outresult)) returnresult; else returnnull; }
2.去除子字符串
//////去除子字符串 /// ///原字符串 /// 要去除的字符串 /// 去除子字符串之后的结果 publicstaticstringDeSubstring(thisstringstr,stringsubstring) { if(string.IsNullOrEmpty(str)||string.IsNullOrEmpty(substring)||!str.Contains(substring)) { returnstr; } returnRegex.Replace(str,Regex.Escape(substring),string.Empty); } //////去除子字符串 /// ///原字符串 /// 要去除的子字符串 /// 去除子字符串之后的结果 publicstaticstringDeSubstring(thisstringstr,paramsstring[]substrings) { if(string.IsNullOrEmpty(str)) returnstr; if(substrings==null) returnstr; varnewStr=str; foreach(variteminsubstrings) { newStr=newStr.DeSubstring(item); } returnnewStr; }
3.获取子序列
//////获取子序列 /// ///序列中元素类型 /// 源数据 /// 开始索引(返回时包括) /// 结束索引(返回时包括) /// 子序列 publicstaticIEnumerableSubEnumerable (thisIEnumerable source,intstartIndex,intendIndex) { if(source==null) yieldreturndefault(T); varlength=source.Count(); if(startIndex<0||endIndex =length||endIndex>=length) thrownewArgumentOutOfRangeException(); varindex=-1; foreach(variteminsource) { index++; if(index endIndex) yieldbreak; yieldreturnitem; } }
4.通过指定键对序列去重,不必实现IEqualityComparer接口
//////通过对指定的值进行比较返回序列中的非重复元素。 /// ///序列中元素类型 /// 指定的比较属性类型 /// 源数据 /// 应用于每个元素的转换函数 /// 一个包含源序列中的按指定属性非重复元素 publicstaticIEnumerableDistinct (thisIEnumerable source,Func selector) { if(source==null) thrownewArgumentNullException(nameof(source)); if(selector==null) thrownewArgumentNullException(nameof(selector)); varset=newHashSet (); foreach(variteminsource) { varresult=selector(item); if(set.Add(result)) { yieldreturnitem; } } }
5.获取序列中重复的元素序列,原理和去重类似
//////通过对指定的值进行比较返回序列中重复的元素 /// ///序列中的数据类型 /// 指定的比较属性类型 /// 源数据 /// 应用于每个元素的转换函数 /// 一个包含源序列中的按指定元素的重复元素 publicstaticIEnumerableIdentical (thisIEnumerable source) { if(source==null) thrownewArgumentNullException(nameof(source)); varsetT=newHashSet (); foreach(variteminsource) { if(!setT.Add(item)) { yieldreturnitem; } } } /// ///通过对指定的值进行比较返回序列中重复的元素 /// ///序列中的数据类型 /// 指定的比较属性类型 /// 源数据 /// 应用于每个元素的转换函数 /// 一个包含源序列中的按指定元素的重复元素 publicstaticIEnumerableIdentical (thisIEnumerable source,Func selector) { if(source==null) thrownewArgumentNullException(nameof(source)); if(selector==null) thrownewArgumentNullException(nameof(selector)); varsetTResult=newHashSet (); foreach(variteminsource) { varresult=selector(item); if(!setTResult.Add(result)) { yieldreturnitem; } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。