| 
						
						
							
								
							
						
						
					 | 
					@ -2,6 +2,7 @@ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					using System; | 
					 | 
					 | 
					using System; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					using System.Collections; | 
					 | 
					 | 
					using System.Collections; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					using System.Collections.Generic; | 
					 | 
					 | 
					using System.Collections.Generic; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					using System.Runtime.InteropServices; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					using System.Text; | 
					 | 
					 | 
					using System.Text; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					using System.Text.RegularExpressions; | 
					 | 
					 | 
					using System.Text.RegularExpressions; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					@ -657,18 +658,18 @@ namespace Apewer | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        } | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        /// <summary>对字符串列表去重。指定 valid 参数时将去除无效字符串。</summary>
 | 
					 | 
					 | 
					        /// <summary>对字符串列表去重。指定 valid 参数时将去除无效字符串。</summary>
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					        public static List<string> Distinct(IEnumerable<string> strings, bool valid = false) | 
					 | 
					 | 
					        /// <param name="strings"></param>
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        /// <param name="valid"></param>
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        public static string[] Distinct(IEnumerable<string> strings, bool valid = false) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        { | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            if (strings == null) return new List<string>(); | 
					 | 
					 | 
					            if (strings == null) return new string[0]; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            const string space = " "; | 
					 | 
					 | 
					            const string space = " "; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            var count = strings.Count(); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            var array = new string[count]; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            var added = 0; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            var hasNull = false; | 
					 | 
					 | 
					            var hasNull = false; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            var hasEmpty = false; | 
					 | 
					 | 
					            var hasEmpty = false; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            var hasSpace = false; | 
					 | 
					 | 
					            var hasSpace = false; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            var array = new ArrayBuilder<string>(); | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            foreach (var s in strings) | 
					 | 
					 | 
					            foreach (var s in strings) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            { | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                if (s == null) | 
					 | 
					 | 
					                if (s == null) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -676,8 +677,7 @@ namespace Apewer | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    if (valid) continue; | 
					 | 
					 | 
					                    if (valid) continue; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    if (hasNull) continue; | 
					 | 
					 | 
					                    if (hasNull) continue; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    hasNull = true; | 
					 | 
					 | 
					                    hasNull = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    array[added] = s; | 
					 | 
					 | 
					                    array.Add(s); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					                    added += 1; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                    continue; | 
					 | 
					 | 
					                    continue; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                } | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                if (s == Empty) | 
					 | 
					 | 
					                if (s == Empty) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -685,8 +685,7 @@ namespace Apewer | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    if (valid) continue; | 
					 | 
					 | 
					                    if (valid) continue; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    if (hasEmpty) continue; | 
					 | 
					 | 
					                    if (hasEmpty) continue; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    hasEmpty = true; | 
					 | 
					 | 
					                    hasEmpty = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    array[added] = s; | 
					 | 
					 | 
					                    array.Add(s); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					                    added += 1; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                    continue; | 
					 | 
					 | 
					                    continue; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                } | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                if (s == space) | 
					 | 
					 | 
					                if (s == space) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -694,13 +693,12 @@ namespace Apewer | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    if (valid) continue; | 
					 | 
					 | 
					                    if (valid) continue; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    if (hasSpace) continue; | 
					 | 
					 | 
					                    if (hasSpace) continue; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    hasSpace = true; | 
					 | 
					 | 
					                    hasSpace = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                    array[added] = s; | 
					 | 
					 | 
					                    array.Add(s); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					                    added += 1; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                    continue; | 
					 | 
					 | 
					                    continue; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                } | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                var exist = false; | 
					 | 
					 | 
					                var exist = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                for (var i = 0; i < added; i++) | 
					 | 
					 | 
					                for (var i = 0; i < array.Length; i++) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					                { | 
					 | 
					 | 
					                { | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    if (array[i] == s) | 
					 | 
					 | 
					                    if (array[i] == s) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                    { | 
					 | 
					 | 
					                    { | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					@ -710,14 +708,10 @@ namespace Apewer | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                } | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					                if (exist) continue; | 
					 | 
					 | 
					                if (exist) continue; | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					                array[added] = s; | 
					 | 
					 | 
					                array.Add(s); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					                added += 1; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					            } | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            if (added < 1) return new List<string>(); | 
					 | 
					 | 
					            return array.Export(); | 
				
			
			
				
				
			
		
	
		
		
			
				
					 | 
					 | 
					            var list = new List<string>(added); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            for (var i = 0; i < added; i++) list.Add(array[i]); | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					            return list; | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        } | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        /// <summary>约束字符串中的字符,只包含指定的字符。</summary>
 | 
					 | 
					 | 
					        /// <summary>约束字符串中的字符,只包含指定的字符。</summary>
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					
  |