StringHelper.cs 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace Ropin.Inspection.Common.Helper
  7. {
  8. public class StringHelper
  9. {
  10. /// <summary>
  11. /// 根据分隔符返回前n条数据
  12. /// </summary>
  13. /// <param name="content">数据内容</param>
  14. /// <param name="separator">分隔符</param>
  15. /// <param name="top">前n条</param>
  16. /// <param name="isDesc">是否倒序(默认false)</param>
  17. /// <returns></returns>
  18. public static List<string> GetTopDataBySeparator(string content, string separator, int top, bool isDesc = false)
  19. {
  20. if (string.IsNullOrEmpty(content))
  21. {
  22. return new List<string>() { };
  23. }
  24. if (string.IsNullOrEmpty(separator))
  25. {
  26. throw new ArgumentException("message", nameof(separator));
  27. }
  28. var dataArray = content.Split(separator).Where(d => !string.IsNullOrEmpty(d)).ToArray();
  29. if (isDesc)
  30. {
  31. Array.Reverse(dataArray);
  32. }
  33. if (top > 0)
  34. {
  35. dataArray = dataArray.Take(top).ToArray();
  36. }
  37. return dataArray.ToList();
  38. }
  39. /// <summary>
  40. /// 根据字段拼接get参数
  41. /// </summary>
  42. /// <param name="dic"></param>
  43. /// <returns></returns>
  44. public static string GetPars(Dictionary<string, object> dic)
  45. {
  46. StringBuilder sb = new StringBuilder();
  47. string urlPars = null;
  48. bool isEnter = false;
  49. foreach (var item in dic)
  50. {
  51. sb.Append($"{(isEnter ? "&" : "")}{item.Key}={item.Value}");
  52. isEnter = true;
  53. }
  54. urlPars = sb.ToString();
  55. return urlPars;
  56. }
  57. /// <summary>
  58. /// 根据字段拼接get参数
  59. /// </summary>
  60. /// <param name="dic"></param>
  61. /// <returns></returns>
  62. public static string GetPars(Dictionary<string, string> dic)
  63. {
  64. StringBuilder sb = new StringBuilder();
  65. string urlPars = null;
  66. bool isEnter = false;
  67. foreach (var item in dic)
  68. {
  69. sb.Append($"{(isEnter ? "&" : "")}{item.Key}={item.Value}");
  70. isEnter = true;
  71. }
  72. urlPars = sb.ToString();
  73. return urlPars;
  74. }
  75. /// <summary>
  76. /// 获取一个GUID
  77. /// </summary>
  78. /// <param name="format">格式-默认为N</param>
  79. /// <returns></returns>
  80. public static string GetGUID(string format = "N")
  81. {
  82. return Guid.NewGuid().ToString(format);
  83. }
  84. /// <summary>
  85. /// 根据GUID获取19位的唯一数字序列
  86. /// </summary>
  87. /// <returns></returns>
  88. public static long GetGuidToLongID()
  89. {
  90. byte[] buffer = Guid.NewGuid().ToByteArray();
  91. return BitConverter.ToInt64(buffer, 0);
  92. }
  93. /// <summary>
  94. /// 根据GUID获取16位的唯一字符串
  95. /// </summary>
  96. /// <param name=\"guid\"></param>
  97. /// <returns></returns>
  98. public static string GuidTo16String(Guid guid)
  99. {
  100. long i = 1;
  101. foreach (byte b in guid.ToByteArray())
  102. i *= ((int)b + 1);
  103. return string.Format("{0:x}", i - DateTime.Now.Ticks);
  104. }
  105. /// <summary>
  106. /// 根据GUID获取19位的唯一数字序列
  107. /// </summary>
  108. /// <returns></returns>
  109. public static long GuidToLongID(Guid guid)
  110. {
  111. byte[] buffer = guid.ToByteArray();
  112. return BitConverter.ToInt64(buffer, 0);
  113. }
  114. /// <summary>
  115. /// 获取字符串最后X行
  116. /// </summary>
  117. /// <param name="resourceStr"></param>
  118. /// <param name="length"></param>
  119. /// <returns></returns>
  120. public static string GetCusLine(string resourceStr, int length)
  121. {
  122. string[] arrStr = resourceStr.Split("\r\n");
  123. return string.Join("", (from q in arrStr select q).Skip(arrStr.Length - length + 1).Take(length).ToArray());
  124. }
  125. /// <summary>
  126. /// 获取ULID字符串
  127. /// </summary>
  128. /// <returns></returns>
  129. public static string GetULIDStr()
  130. {
  131. var ulid = Ulid.NewUlid();
  132. return ulid.ToString();
  133. }
  134. /// <summary>
  135. /// 获取ULID
  136. /// </summary>
  137. /// <returns></returns>
  138. public static Ulid GetULID()
  139. {
  140. var ulid = Ulid.NewUlid();
  141. return ulid;
  142. }
  143. #region 删除最后结尾的一个逗号
  144. /// <summary>
  145. /// 删除最后结尾的一个逗号
  146. /// </summary>
  147. public static string DelLastComma(string str)
  148. {
  149. if (str.Length < 1)
  150. {
  151. return "";
  152. }
  153. return str.Substring(0, str.LastIndexOf(","));
  154. }
  155. #endregion 删除最后结尾的一个逗号
  156. #region 删除最后结尾的指定字符后的字符
  157. /// <summary>
  158. /// 删除最后结尾的指定字符后的字符
  159. /// </summary>
  160. public static string DelLastChar(string str, string strchar)
  161. {
  162. if (string.IsNullOrEmpty(str))
  163. return "";
  164. if (str.LastIndexOf(strchar) >= 0 && str.LastIndexOf(strchar) == str.Length - 1)
  165. {
  166. return str.Substring(0, str.LastIndexOf(strchar));
  167. }
  168. return str;
  169. }
  170. #endregion 删除最后结尾的指定字符后的字符
  171. #region 删除最后结尾的一个逗号及字符
  172. /// <summary>
  173. /// 删除最后结尾的一个逗号
  174. /// </summary>
  175. public static string DelLastCommaStr(string str)
  176. {
  177. if (str.Length < 1)
  178. {
  179. return "";
  180. }
  181. return str.Substring(0, str.LastIndexOf(","));
  182. }
  183. #endregion 删除最后结尾的一个逗号
  184. }
  185. }