当前位置:   article > 正文

C#个人珍藏基础类库分享 — 8、通用工具帮助类ToolHelper_c# 常用类库

c# 常用类库

        做.NET开发的同学,一套简单易用的基础类库是必不可少的,这里把我混迹C#圈子十余载珍藏的类库分享出来,希望能够给刚踏入开发门槛的朋友一些帮助。

        后续会逐步分享基础库的其余部分,先列个大纲:


通用工具帮助类包括方法目录如下:     

1、类型验证相关

     1.1 判断字符串是否为数字 

     1.2 判断字符串是否为整型

     1.3 判断字符串是否为日期

2、类型转换相关

     2.1 获得字符串值

     2.2 获取8位整型值

     2.3 获得16位整型值

     2.4 获得整型值

     2.5 获得长整型

     2.6 获得双精度值

     2.7 获得时间类型值

3、数组相关

     3.1 将以分隔符分隔的字符串转为int数组

     3.2 合并一组可枚举的对象为字符串

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using System.Web;
  7. using System.Net;
  8. using System.IO;
  9. using System.Collections;
  10. using System.Configuration;
  11. namespace BaseUtilities
  12. {
  13. /// <summary>
  14. /// 常用的工具类静态方法集合。
  15. /// </summary>
  16. public class Tools
  17. {
  18. #region 类型验证
  19. /// <summary>
  20. /// 判断字符串是否为数字
  21. /// </summary>
  22. /// <param name="src"></param>
  23. /// <returns></returns>
  24. public static bool IsNumber(string src)
  25. {
  26. try
  27. {
  28. decimal d = decimal.Parse(src);
  29. return true;
  30. }
  31. catch
  32. {
  33. return false;
  34. }
  35. }
  36. /// <summary>
  37. /// 判断字符串是否为整型
  38. /// </summary>
  39. /// <param name="src"></param>
  40. /// <returns></returns>
  41. public static bool IsInt(string src)
  42. {
  43. try
  44. {
  45. int d = int.Parse(src);
  46. return true;
  47. }
  48. catch
  49. {
  50. return false;
  51. }
  52. }
  53. /// <summary>
  54. /// 判断字符串是否为日期
  55. /// </summary>
  56. /// <param name="src"></param>
  57. /// <returns></returns>
  58. public static bool IsDatetime(string src)
  59. {
  60. if (src.Trim() == "")
  61. return false;
  62. try
  63. {
  64. DateTime d = DateTime.Parse(src);
  65. d = Convert.ToDateTime(src);
  66. return true;
  67. }
  68. catch
  69. {
  70. return false;
  71. }
  72. }
  73. #endregion
  74. #region 类型转换
  75. /// <summary>
  76. /// 获得字符串值。
  77. /// <para>该方法会将 string.Empty 转换为 defaultValue。</para>
  78. /// <para>该方法用于依据一个对象,始终得到一个不为空的字符串(除非调用者将 defaultVal 设置为空)。</para>
  79. /// <para>它等价于在程序中对象判空、ToString、IsNullOrEmpty等处理。</para>
  80. /// </summary>
  81. /// <param name="src">源对象</param>
  82. /// <param name="defaultVal">转换失败时期望返回的字符串值</param>
  83. /// <returns></returns>
  84. public static string GetStr(object src, string defaultVal)
  85. {
  86. return GetStr(src, defaultVal, true);
  87. }
  88. /// <summary>
  89. /// 获得字符串值。
  90. /// <para>该方法会将 string.Empty 转换为 defaultValue。</para>
  91. /// <para>该方法用于依据一个对象,始终得到一个不为空的字符串(除非调用者将 defaultVal 设置为空)。</para>
  92. /// <para>它等价于在程序中对象判空、ToString、IsNullOrEmpty等处理。</para>
  93. /// </summary>
  94. /// <param name="src">源对象</param>
  95. /// <param name="defaultVal">转换失败时期望返回的字符串值</param>
  96. /// <param name="disallowEmpty">是否不允许空值(将 string.Empty 转换为 defaultValue)</param>
  97. /// <returns></returns>
  98. public static string GetStr(object src, string defaultVal, bool disallowEmpty)
  99. {
  100. if (src == null)
  101. return defaultVal;
  102. if (disallowEmpty && src.ToString().Length == 0)
  103. return defaultVal;
  104. return src.ToString();
  105. }
  106. /// <summary>
  107. /// 获取8位整型值。
  108. /// </summary>
  109. /// <param name="src">长整型值</param>
  110. /// <returns></returns>
  111. public static byte GetByte(long src)
  112. {
  113. if (src > byte.MaxValue)
  114. return byte.MaxValue;
  115. else if (src < byte.MinValue)
  116. return byte.MinValue;
  117. return (byte)src;
  118. }
  119. /// <summary>
  120. /// 获得16位整型值。
  121. /// </summary>
  122. /// <param name="src">源对象</param>
  123. /// <param name="defaultVal">转换失败时期望返回的整型值</param>
  124. /// <param name="scale">源字符串的进位制,如16、10、8、2等</param>
  125. /// <returns></returns>
  126. public static short GetShort(object src, short defaultVal, int scale)
  127. {
  128. short rv;
  129. try
  130. {
  131. rv = Convert.ToInt16(src.ToString().Trim(), scale);
  132. }
  133. catch
  134. {
  135. rv = defaultVal;
  136. }
  137. return rv;
  138. }
  139. /// <summary>
  140. /// 获得16位整型值。
  141. /// </summary>
  142. /// <param name="src">源对象</param>
  143. /// <param name="defaultVal">转换失败时期望返回的整型值</param>
  144. /// <returns></returns>
  145. public static short GetShort(object src, short defaultVal)
  146. {
  147. short rv;
  148. if (src != null && short.TryParse(src.ToString().Trim(), out rv))
  149. return rv;
  150. return defaultVal;
  151. }
  152. /// <summary>
  153. /// 获取16位整型值。
  154. /// </summary>
  155. /// <param name="src">长整型值</param>
  156. /// <returns></returns>
  157. public static short GetShort(long src)
  158. {
  159. if (src > short.MaxValue)
  160. return short.MaxValue;
  161. else if (src < short.MinValue)
  162. return short.MinValue;
  163. return (short)src;
  164. }
  165. /// <summary>
  166. /// 获得整型值。
  167. /// </summary>
  168. /// <param name="src">源对象</param>
  169. /// <param name="defaultVal">转换失败时期望返回的整型值</param>
  170. /// <param name="scale">源字符串的进位制,如16、10、8、2等</param>
  171. /// <returns></returns>
  172. public static int GetInt(object src, int defaultVal, int scale)
  173. {
  174. int rv;
  175. try
  176. {
  177. rv = Convert.ToInt32(src.ToString().Trim(), scale);
  178. }
  179. catch
  180. {
  181. rv = defaultVal;
  182. }
  183. return rv;
  184. }
  185. /// <summary>
  186. /// 获得整型值。
  187. /// </summary>
  188. /// <param name="src">源对象</param>
  189. /// <param name="defaultVal">转换失败时期望返回的整型值</param>
  190. /// <returns></returns>
  191. public static int GetInt(object src, int defaultVal)
  192. {
  193. int rv;
  194. if (src != null && int.TryParse(src.ToString().Trim(), out rv))
  195. return rv;
  196. return defaultVal;
  197. }
  198. /// <summary>
  199. /// 获取整型值。
  200. /// </summary>
  201. /// <param name="src">长整型值</param>
  202. /// <returns></returns>
  203. public static int GetInt(long src)
  204. {
  205. if (src > int.MaxValue)
  206. return int.MaxValue;
  207. else if (src < int.MinValue)
  208. return int.MinValue;
  209. return (int)src;
  210. }
  211. /// <summary>
  212. /// 获得长整型值。
  213. /// </summary>
  214. /// <param name="src">源对象</param>
  215. /// <param name="defaultVal">转换失败时期望返回的长整型值</param>
  216. /// <param name="scale">源字符串的进位制,如16、10、8、2等</param>
  217. /// <returns></returns>
  218. public static long GetLong(object src, long defaultVal, int scale)
  219. {
  220. long rv;
  221. try
  222. {
  223. rv = Convert.ToInt64(src.ToString().Trim(), scale);
  224. }
  225. catch
  226. {
  227. rv = defaultVal;
  228. }
  229. return rv;
  230. }
  231. /// <summary>
  232. /// 获得长整型值。
  233. /// </summary>
  234. /// <param name="src">源对象</param>
  235. /// <param name="defaultVal">转换失败时期望返回的长整型值</param>
  236. /// <returns></returns>
  237. public static long GetLong(object src, long defaultVal)
  238. {
  239. long rv;
  240. if (src != null && long.TryParse(src.ToString(), out rv))
  241. return rv;
  242. return defaultVal;
  243. }
  244. /// <summary>
  245. /// 获得双精度值。
  246. /// </summary>
  247. /// <param name="src">源对象</param>
  248. /// <param name="defaultVal">转换失败时期望返回的双精度值</param>
  249. /// <returns></returns>
  250. public static double GetDouble(object src, double defaultVal)
  251. {
  252. double rv;
  253. if (src != null && double.TryParse(src.ToString(), out rv))
  254. return rv;
  255. return defaultVal;
  256. }
  257. /// <summary>
  258. /// 获得时间类型值
  259. /// </summary>
  260. /// <param name="src">源对象</param>
  261. /// <param name="defaultVal">转换失败时期望返回的时间类型值</param>
  262. /// <returns></returns>
  263. public static DateTime GetDatetime(object src, DateTime defaultVal)
  264. {
  265. DateTime dt;
  266. if (src != null && DateTime.TryParse(src.ToString(), out dt))
  267. return dt;
  268. return defaultVal;
  269. }
  270. #endregion
  271. #region Byte相关
  272. /// <summary>
  273. /// 返回由字节数组中指定位置的两个字节转换来的 16 位有符号整型 (NetworkToHostOrder)。
  274. /// </summary>
  275. /// <param name="src">字节数组</param>
  276. /// <param name="startIndex">读数起始位置</param>
  277. /// <returns></returns>
  278. public static short ReadShort(byte[] src, int startIndex)
  279. {
  280. return IPAddress.NetworkToHostOrder(BitConverter.ToInt16(src, startIndex));
  281. }
  282. /// <summary>
  283. /// 返回由字节数组中指定位置的两个字节转换来的 32 位有符号整型 (NetworkToHostOrder)。
  284. /// </summary>
  285. /// <param name="src">字节数组</param>
  286. /// <param name="startIndex">读数起始位置</param>
  287. /// <returns></returns>
  288. public static int ReadInt(byte[] src, int startIndex)
  289. {
  290. return IPAddress.NetworkToHostOrder(BitConverter.ToInt32(src, startIndex));
  291. }
  292. /// <summary>
  293. /// 返回由字节数组中指定位置的两个字节转换来的 32 位无符号整型 (NetworkToHostOrder)。
  294. /// </summary>
  295. /// <param name="src">字节数组</param>
  296. /// <param name="startIndex">读数起始位置</param>
  297. /// <returns></returns>
  298. public static uint ReadUInt(byte[] src, int startIndex)
  299. {
  300. return (uint)IPAddress.NetworkToHostOrder((long)BitConverter.ToUInt32(src, startIndex));
  301. }
  302. /// <summary>
  303. /// 返回由字节数组中指定位置的两个字节转换来的 64 位有符号整型 (NetworkToHostOrder)。
  304. /// </summary>
  305. /// <param name="src">字节数组</param>
  306. /// <param name="startIndex">读数起始位置</param>
  307. /// <returns></returns>
  308. public static long ReadLong(byte[] src, int startIndex)
  309. {
  310. return IPAddress.NetworkToHostOrder(BitConverter.ToInt64(src, startIndex));
  311. }
  312. /// <summary>
  313. /// 获得byte数组。
  314. /// </summary>
  315. /// <param name="src">整型值</param>
  316. /// <returns></returns>
  317. public static byte[] GetBytes(int src)
  318. {
  319. return BitConverter.GetBytes(IPAddress.HostToNetworkOrder(src));
  320. }
  321. /// <summary>
  322. /// 获得byte数组。
  323. /// </summary>
  324. /// <param name="src">短整型值</param>
  325. /// <returns></returns>
  326. public static byte[] GetBytes(short src)
  327. {
  328. return BitConverter.GetBytes(IPAddress.HostToNetworkOrder(src));
  329. }
  330. /// <summary>
  331. /// 获得byte数组。
  332. /// </summary>
  333. /// <param name="src">长整型值</param>
  334. /// <returns></returns>
  335. public static byte[] GetBytes(long src)
  336. {
  337. return BitConverter.GetBytes(IPAddress.HostToNetworkOrder(src));
  338. }
  339. /// <summary>
  340. /// 获得byte数组。
  341. /// </summary>
  342. /// <param name="src">整型值</param>
  343. /// <param name="bytesRightLen">要靠右保留的byte个数</param>
  344. /// <returns></returns>
  345. public static byte[] RightBytes(byte[] src, int bytesRightLen)
  346. {
  347. byte[] retBytes = new byte[bytesRightLen];
  348. Array.Copy(src, src.Length - bytesRightLen, retBytes, 0, bytesRightLen);
  349. return retBytes;
  350. }
  351. #endregion
  352. #region 数组相关
  353. /// <summary>
  354. /// 将以分隔符分隔的字符串转为int数组
  355. /// </summary>
  356. /// <param name="str"></param>
  357. /// <param name="seperator"></param>
  358. /// <returns></returns>
  359. public static int[] SplitToInt32Array(string str, string seperator)
  360. {
  361. string[] items = str.Split(new string[] { seperator }, StringSplitOptions.RemoveEmptyEntries);
  362. int[] array = new int[items.Length];
  363. for (int i = items.Length - 1; i >= 0; i--)
  364. {
  365. int value;
  366. if (!int.TryParse(items[i], out value))
  367. return null;
  368. array[i] = value;
  369. }
  370. return array;
  371. }
  372. /// <summary>
  373. /// 将以分隔符分隔的字符串转为int数组
  374. /// </summary>
  375. /// <param name="str"></param>
  376. /// <param name="seperators"></param>
  377. /// <returns></returns>
  378. public static int[] SplitToInt32Array(string str, string[] seperators)
  379. {
  380. string[] items = str.Split(seperators, StringSplitOptions.RemoveEmptyEntries);
  381. int[] array = new int[items.Length];
  382. for (int i = items.Length - 1; i >= 0; i--)
  383. {
  384. int value;
  385. if (!int.TryParse(items[i], out value))
  386. return null;
  387. array[i] = value;
  388. }
  389. return array;
  390. }
  391. /// <summary>
  392. /// 合并一组可枚举的对象为字符串
  393. /// </summary>
  394. /// <param name="enumerable">被枚举对象</param>
  395. /// <param name="seperator">分隔符</param>
  396. /// <returns></returns>
  397. public static string ConcatEnumerable(IEnumerable enumerable, string seperator)
  398. {
  399. IEnumerator enumerator = enumerable.GetEnumerator();
  400. if (!enumerator.MoveNext())
  401. return string.Empty;
  402. StringBuilder text = new StringBuilder(128);
  403. text.Append(enumerator.Current.ToString());
  404. while (enumerator.MoveNext())
  405. {
  406. text.Append(seperator + enumerator.Current);
  407. }
  408. return text.ToString();
  409. }
  410. #endregion
  411. #region 列表分页相关
  412. /// <summary>
  413. /// 获取分页起始索引(同时验证与修改参数)
  414. /// </summary>
  415. /// <param name="pageSize">每页显示记录数</param>
  416. /// <param name="pageIndex">当前是第几页</param>
  417. /// <returns></returns>
  418. public static int GetStartRec(ref int pageSize, ref int pageIndex)
  419. {
  420. if (pageSize < 1) pageSize = 20;
  421. if (pageIndex < 1) pageIndex = 1;
  422. return pageSize * (pageIndex - 1) + 1;
  423. }
  424. /// <summary>
  425. /// 获取分页终止索引(不验证参数)
  426. /// </summary>
  427. /// <param name="pageSize">每页显示记录数</param>
  428. /// <param name="pageIndex">当前是第几页</param>
  429. /// <returns></returns>
  430. public static int GetEndRec(int pageSize, int pageIndex)
  431. {
  432. return pageSize * pageIndex;
  433. }
  434. /// <summary>
  435. /// 获取分页起始索引(同时验证与修改参数)
  436. /// </summary>
  437. /// <param name="pageSize">每页显示记录数</param>
  438. /// <param name="pageIndex">当前是第几页</param>
  439. /// <returns></returns>
  440. public static long GetStartRec(ref long pageSize, ref long pageIndex)
  441. {
  442. if (pageSize < 1) pageSize = 20;
  443. if (pageIndex < 1) pageIndex = 1;
  444. return pageSize * (pageIndex - 1) + 1;
  445. }
  446. /// <summary>
  447. /// 获取分页终止索引(不验证参数)
  448. /// </summary>
  449. /// <param name="pageSize">每页显示记录数</param>
  450. /// <param name="pageIndex">当前是第几页</param>
  451. /// <returns></returns>
  452. public static long GetEndRec(long pageSize, long pageIndex)
  453. {
  454. return pageSize * pageIndex;
  455. }
  456. /// <summary>
  457. /// 根据记录总数与每页记录数,计算分页总数
  458. /// </summary>
  459. /// <param name="recordCount">记录总数</param>
  460. /// <param name="pageSize">每页记录数</param>
  461. /// <returns></returns>
  462. public static int GetPageSize(int recordCount, int pageSize)
  463. {
  464. return (int)Math.Ceiling((double)recordCount / pageSize);
  465. }
  466. #endregion
  467. #region 其它
  468. /// <summary>
  469. /// 得到Request中指定参数的值(返回String值)
  470. /// </summary>
  471. /// <param name="keyName">要获取的参数的名称</param>
  472. /// <param name="defaultVal">当不存在该参数时返回的默认值</param>
  473. /// <returns></returns>
  474. public static string GetRequestVal(string keyName, string defaultVal)
  475. {
  476. string rv = System.Web.HttpContext.Current.Request[keyName];
  477. return Tools.GetStr(rv, defaultVal);
  478. }
  479. /// <summary>
  480. /// 得到Request中指定参数的值(返回Int值)
  481. /// </summary>
  482. /// <param name="keyName">要获取的参数的名称</param>
  483. /// <param name="defaultVal">当不存在该参数时返回的默认值</param>
  484. /// <returns></returns>
  485. public static int GetRequestVal(string keyName, int defaultVal)
  486. {
  487. string rv = System.Web.HttpContext.Current.Request[keyName];
  488. return Tools.GetInt(rv, defaultVal);
  489. }
  490. /// <summary>
  491. /// 得到一个系统配置项的值
  492. /// </summary>
  493. /// <param name="keyName">配置项名称</param>
  494. /// <param name="defaultVal">在不存在该配置项时返回的默认值</param>
  495. /// <returns></returns>
  496. public static string GetAppSetting(string keyName, string defaultVal)
  497. {
  498. string rv = System.Configuration.ConfigurationManager.AppSettings[keyName];
  499. return Tools.GetStr(rv, defaultVal);
  500. }
  501. /// <summary>
  502. /// 得到一个系统配置项的值
  503. /// </summary>
  504. /// <param name="keyName">配置项名称</param>
  505. /// <param name="defaultVal">在不存在该配置项时返回的默认值</param>
  506. /// <returns></returns>
  507. public static int GetAppSetting(string keyName, int defaultVal)
  508. {
  509. string rv = System.Configuration.ConfigurationManager.AppSettings[keyName];
  510. return Tools.GetInt(rv, defaultVal);
  511. }
  512. /// <summary>
  513. /// 得到一个连接字符串配置项的值
  514. /// <para>当配置不存在时,返回Null</para>
  515. /// </summary>
  516. /// <param name="keyName">配置项名称</param>
  517. /// <returns></returns>
  518. public static string GetConnStrConfig(string keyName)
  519. {
  520. if(ConfigurationManager.ConnectionStrings[keyName] != null)
  521. return System.Configuration.ConfigurationManager.ConnectionStrings[keyName].ConnectionString;
  522. return null;
  523. }
  524. /// <summary>
  525. /// 获得字符串值的前N位字符
  526. /// </summary>
  527. /// <param name="src">指定的字符串</param>
  528. /// <param name="len">指定的长度</param>
  529. /// <returns></returns>
  530. public static string GetLenthStr(string src, int len)
  531. {
  532. if (src.Length > len)
  533. return src.Substring(0, len);
  534. return src;
  535. }
  536. /// <summary>
  537. /// 对字符串进行编码,以保证SQL参数的安全性
  538. /// </summary>
  539. /// <param name="src"></param>
  540. /// <returns></returns>
  541. public static string EncodeStr4Sql(string src)
  542. {
  543. return src.Replace("'", "''");
  544. }
  545. #endregion
  546. }
  547. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/228655?site
推荐阅读
相关标签
  

闽ICP备14008679号