1 using System;
2 using System.Collections;
3 using System.Collections.Generic;
4 using System.Linq;
5 using System.Text;
6 using System.Text.RegularExpressions;
7 using System.Web;
8 using System.Data;
9 using System.Data.SqlClient;
10 using System.Web.UI;
11 using System.IO;
12
13
14 namespace TopWin.DongFengYL.SQLMemberShip.Utility
15 {
16 public class CommonFunction
17 {
18 /// <summary>
19 /// 截取字符串方法
20 /// </summary>
21 /// <param name="str"></param>
22 /// <param name="len"></param>
23 /// <param name="withToken"></param>
24 /// <returns></returns>
25 public static string SubStringByLength(ref string str, int len, bool withToken)
26 {
27 char[] charArray = str.ToCharArray();
28 StringBuilder builder = new StringBuilder(len + 10);
29 int n = 0;
30 bool isCut = false;
31 int clen = charArray.Length;
32 for (int i = 0; i != clen; ++i)
33 {
34 if ((charArray[i] >= 0x4E00 && charArray[i] <= 0x9FA5) || (charArray[i] > 65280 && charArray[i] < 65375))
35 {
36 n += 2;
37 if (n > len)
38 {
39 isCut = true;
40 break;
41 }
42 builder.Append(charArray[i]);
43 }
44 else
45 {
46 ++n;
47 if (n > len)
48 {
49 isCut = true;
50 break;
51 }
52 builder.Append(charArray[i]);
53 }
54
55 }
56 builder.Append(isCut ? withToken ? "..." : string.Empty : string.Empty);
57 return builder.ToString();
58 }
59
60 /// <summary>
61 /// 替换HTML代码中图片的相对路径为绝对路径
62 /// </summary>
63 /// <param name="htmlValue">HTML代码</param>
64 /// <param name="absPath">绝对路径</param>
65 /// <returns></returns>
66 public static string ReplaceVirtualImgPath(string htmlValue, string absPath)
67 {
68 string regexp = "src=[\"']/";
69 string token = Guid.NewGuid().ToString();
70 string repString = System.Text.RegularExpressions.Regex.Replace(htmlValue, regexp, token);
71 MatchCollection mc = Regex.Matches(htmlValue, regexp, RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Compiled);
72 int offset1 = 0;
73 int offset2 = 0;
74 int len = repString.Length;
75 StringBuilder builder = new StringBuilder(15000);
76 IEnumerator iterator = mc.GetEnumerator();
77 while (iterator.MoveNext())
78 {
79 Match m = iterator.Current as Match;
80 offset2 = repString.IndexOf(token, offset1);
81 if (offset2 + token.Length > len) break;
82 string tempStr = repString.Substring(offset1, offset2 - offset1 + token.Length);
83 string url = Regex.Replace(m.Value, "/", absPath);
84 builder.Append(tempStr.Replace(token, url));
85 offset1 = offset2 + token.Length;
86 }
87
88 if (offset1 < repString.Length)
89 {
90 builder.Append(repString.Substring(offset1, repString.Length - offset1));
91 }
92
93 return builder.ToString();
94 }
95
96 /// <summary>
97 /// 获取HTML代码中图片的路径
98 /// </summary>
99 /// <param name="htmlValue"></param>
100 /// <returns></returns>
101 public static ArrayList GetImgTagSrc(string htmlValue)
102 {
103 ArrayList resultList = new ArrayList();
104 string regexp = @"<IMG[^>]+src=\s*(?:'(?<src>[^']+)'|""(?<src>[^""]+)""|(?<src>[^>\s]+))\s*[^>]*>";
105 MatchCollection mc = Regex.Matches(htmlValue, regexp, RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Compiled);
106 foreach (Match m in mc)
107 {
108 resultList.Add(m.Groups["src"].Value.ToLower());
109 }
110 if (resultList.Count == 0)
111 {
112 resultList.Add(string.Empty);
113 }
114 return resultList;
115 }
116
117 /// <summary>
118 /// 将包含HTML标记的字符串去掉HTML标记之后按指定长度截取
119 /// </summary>
120 /// <param name="original"></param>
121 /// <param name="length"></param>
122 /// <returns></returns>
123 public static string TrimString(string original, int length)
124 {
125 string str = string.Empty;
126 string tempStr = original;
127 System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex("(<\\s*[a-zA-Z][^>]*>)|(</\\s*[a-zA-Z][^>]*>)|(\\s)", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
128 if (original.Length > 0)
129 {
130 tempStr = reg.Replace(original, "").Trim();
131 }
132
133 int sLen = tempStr.Length;
134 if (length == 0)
135 {
136 str = tempStr;
137 }
138 else
139 {
140 if (sLen <= length || sLen == length + 2 || sLen == length + 1)
141 {
142 str = tempStr;
143 }
144 else
145 {
146 str = tempStr.Substring(0, length) + "...";
147 }
148 }
149 return str;
150 }
151
152 public static string ToHtmlLF(string input)
153 {
154 return input.Replace("\r\n", @"<br/>").Replace("\n", @"<br/>").Replace(" ", " ");
155 }
156
157 public static string GetGenGuid()
158 {
159 string genGuid = Guid.NewGuid().ToString().Replace("-", string.Empty);
160 return genGuid;
161 }
162
163 public static string GetCurWebUrl(string webUrl)
164 {
165 string[] stages = webUrl.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
166 if (webUrl.IndexOf("http://", StringComparison.CurrentCultureIgnoreCase) == 0)
167 {
168 return stages[0] + "//" + stages[1] + "/" + stages[2];
169 }
170 else
171 {
172 return stages[0] + "/" + stages[1];
173 }
174 }
175
176 public static string GetFolderUrl(string serverRelationUrl)
177 {
178 string targetUrl = string.Empty;
179 string[] stages = serverRelationUrl.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
180 targetUrl = serverRelationUrl.Substring(stages[0].Length + 1, serverRelationUrl.Length - (stages[0].Length + 1));
181 return targetUrl;
182 }
183
184 public static string GetCurSiteUrl(string webUrl)
185 {
186 string[] stages = webUrl.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
187 if (webUrl.IndexOf("http://", StringComparison.CurrentCultureIgnoreCase) == 0)
188 {
189 return stages[0] + "//" + stages[1];
190 }
191 else
192 {
193 return stages[0];
194 }
195 }
196
197 /// <summary>
198 /// 消息对话框alert
199 /// </summary>
200 /// <param name="page"></param>
201 /// <param name="message"></param>
202 public static void ShowMessage(Page page, string message)
203 {
204 page.ClientScript.RegisterStartupScript(
205 page.GetType(),
206 Guid.NewGuid().ToString(),
207 string.Format(@"<script language=javascript>alert(""{0}"");</script>",
208 message.Replace(@"""", "'").Replace("\r\n", @"\n").Replace("\n", @"\n").Replace("\\",
209 "\\\\").
210 Replace(@"\\n", @"\n")));
211 }
212
213 /// <summary>
214 /// 消息对话框 alert
215 /// </summary>
216 /// <param name="page"></param>
217 /// <param name="message"></param>
218 /// <param name="target"></param>
219 public static void ShowMessage(Page page, string message, string target)
220 {
221 page.ClientScript.RegisterStartupScript(
222 page.GetType(),
223 Guid.NewGuid().ToString(),
224 string.Format(@"<script language=javascript>alert(""{0}"");window.location.href=""{1}"";</script>",
225 message.Replace(@"""", "'").Replace("\r\n", @"\n").Replace("\n", @"\n").Replace("\\",
226 "\\\\").
227 Replace(@"\\n", @"\n"), target));
228 }
229
230
231
232
233 /// <summary>
234 /// 获取复杂性要求随机数
235 /// </summary>
236 /// <param name="VcodeNum"></param>
237 /// <returns></returns>
238 public static string RndNumADComplex(int VcodeNum)
239 {
240 string strValue = "!,$,#,%";
241 string[] valueArray = strValue.Split(new char[] { ',' });
242 Random rand = new Random();
243 int t = rand.Next(4);
244 string strNum = RndNum(VcodeNum);
245 if (strNum.Length > 1)
246 {
247 strNum = strNum.Substring(0, strNum.Length - 1);
248 strNum = strNum + valueArray[t];
249 }
250 return strNum;
251 }
252
253 /// <summary>
254 /// 获取随机数
255 /// </summary>
256 /// <param name="VcodeNum">随机数位数</param>
257 /// <returns></returns>
258 public static string RndNum(int VcodeNum)
259 {
260 string strValue = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
261 string[] valueArray = strValue.Split(new char[] { ',' });
262 string strNum = string.Empty;
263 int temp = -1;
264
265 Random rand = new Random();
266 for (int i = 1; i < VcodeNum + 1; i++)
267 {
268 if (temp != -1)
269 {
270 rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));
271 }
272 int t = rand.Next(62);
273 if (temp != -1 && temp == t)
274 {
275 return RndNum(VcodeNum);
276 }
277 temp = t;
278 strNum += valueArray[t];
279 }
280 return strNum;
281 }
282
283 /// <summary>
284 /// 获取图片中的第一张图片
285 /// </summary>
286 /// <param name="content">内容</param>
287 /// <returns></returns>
288 public static string GetFirstImgUrlFromContent(string content)
289 {
290 string imgUrl = string.Empty;
291 try
292 {
293 string str = @"<IMG[^>]+src=\s*(?:'(?<src>[^']+)'|""(?<src>[^""]+)""|(?<src>[^>\s]+))\s*[^>]*>";
294 MatchCollection mc = Regex.Matches(content, str, RegexOptions.Multiline | RegexOptions.IgnoreCase | RegexOptions.Compiled);
295 if (mc.Count > 0)
296 {
297 imgUrl = mc[0].Groups["src"].Value.ToLower();
298 }
299 }
300 catch
301 {
302 }
303 return imgUrl;
304 }
305
306
307 /// <summary>
308 /// 判断用户是否在预算管控组
309 /// </summary>
310 /// <returns></returns>
311 public bool UserIstrBudgetMan(string userAccount)
312 {
313 IDbConnection conn = Config.Instance.CreateDbConnection();
314 conn.Open();
315
316 SqlParameter[] aParms = new SqlParameter[]
317 {
318 new SqlParameter("@userAccount",userAccount)
319 };
320 DataSet ds = DbHelper.ExecuteDataset(conn, CommandType.StoredProcedure, "sp_DY_UserIstrBudgetMan", aParms);
321
322 if (ds != null && ds.Tables[0].Rows.Count != 0)
323 return true;
324 else
325 return false;
326 }
327 /// <summary>
328 /// 判断文件是否存在,如果存在删除
329 /// </summary>
330 /// <param name="path"></param>
331 /// <returns></returns>
332 public static void IsExsiteDelFile(string path)
333 {
334 if (File.Exists(path))
335 {
336 File.Delete(path);
337 }
338 }
339 public static string CreateDirectory(string path)
340 {
341 if (!Directory.Exists(path))
342 {
343 Directory.CreateDirectory(path);
344 }
345 return path;
346 }
347 /// <summary>
348 /// 删除UserCopyImport文件夹中七天之前的文件
349 /// </summary>
350 /// <returns></returns>
351 public static void DeleteFilesForOverServeDays()
352 {
353 Config config = new Config();
354 TimeSpan ts1 = new TimeSpan(DateTime.Now.Ticks);
355 string directoryPath = System.Web.HttpContext.Current.Server.MapPath(config.GetUserCopyImportPath());
356 string overDays = config.GetUserCopyImportFilesOverDays();
357 DirectoryInfo mydir = new DirectoryInfo(directoryPath);
358 foreach (FileSystemInfo fsi in mydir.GetFileSystemInfos())
359 {
360 if (fsi is FileInfo)
361 {
362 FileInfo fi = (FileInfo)fsi;
363 DateTime dt = DateTime.ParseExact(fi.Name.ToString().Split('.')[0], "yyyyMMddHHmmss", System.Globalization.CultureInfo.CurrentCulture);
364 TimeSpan ts2 = new TimeSpan(dt.Ticks);
365
366 if (ts1.Subtract(ts2).Duration().Days >= Convert.ToInt32(overDays))
367 {
368 fi.Delete();
369 }
370 }
371 }
372 }
373 public static string GetNums()
374 {
375 string arr = "0,1,2,3,4,5,6,7,8,9";
376 return GenerateRandomNumber(arr, 4);
377 }
378 public static string GetChars()
379 {
380 string arr = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
381 return GenerateRandomNumber(arr, 3);
382 }
383 public static string GetSpecialChars()
384 {
385 string arr = "~,!,@,#,¥,%,&,*,(,),+,=,{,},|";
386 return GenerateRandomNumber(arr, 1);
387 }
388 public static string GenerateRandomNumber(string content, int Length)
389 {
390 string[] constant = content.Split(',');
391 System.Text.StringBuilder newRandom = new System.Text.StringBuilder(8);
392 Random rd = new Random();
393 for (int i = 0; i < Length; i++)
394 {
395 newRandom.Append(constant[rd.Next(constant.Length)]);
396 }
397 return newRandom.ToString();
398 }
399 /// <summary>
400 /// 自动生成密码
401 /// </summary>
402 /// <returns></returns>
403 public static string GetPassword()
404 {
405 return GetNums() + GetChars() + GetSpecialChars();
406 }
407
408 /// <summary>
409 /// 检查密码是否通过正则表达式验证
410 /// </summary>
411 public static bool IsMatchRight(string inValue,string reg)
412 {
413 string emailPattern = @"" + reg + "";
414 bool match = Regex.IsMatch(inValue, emailPattern);
415 return match;
416 }
417 }
418 }