UtilStr.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Drawing;
  5. using System.Drawing.Printing;
  6. using System.Globalization;
  7. using System.Text;
  8. namespace CommonTool
  9. {
  10. public sealed class UtilStr
  11. {
  12. /// <summary>
  13. /// 得到该对象的字符串,在字符串的两边加上“[”“]”
  14. /// </summary>
  15. /// <param name="poObject">处理的对象</param>
  16. /// <returns>字符串</returns>
  17. public static string GetDelimitedStr(object poObject)
  18. {
  19. return ("[" + poObject + "]");
  20. }
  21. /// <summary>
  22. /// 连接连个对象的字符串型,并把他们连接成一个字符串返回出来。
  23. /// </summary>
  24. /// <param name="poFirst"></param>
  25. /// <param name="poSecond"></param>
  26. /// <returns></returns>
  27. public static string JoinString(object poFirst, object poSecond)
  28. {
  29. return string.Format("[{0}],[{1}]", poFirst.ToString().Trim(), poSecond.ToString().Trim());
  30. }
  31. /// <summary>
  32. /// 将一个对象以字符串形式与另外一个字符串进行连接,并添加“[”,“]”标识符号
  33. /// </summary>
  34. /// <param name="pcSource">被连接的字符串</param>
  35. /// <param name="poTobeAppended">连接的字符串</param>
  36. /// <returns>返回值</returns>
  37. public static string AddStr(string pcSource, object poTobeAppended)
  38. {
  39. string lcStr = GetDelimitedStr(poTobeAppended);
  40. pcSource = pcSource.Trim();
  41. if (pcSource == "")
  42. {
  43. return lcStr;
  44. }
  45. if ((pcSource[0] == '[') && (pcSource[pcSource.Length - 1] == ']'))
  46. {
  47. return (pcSource + string.Format(",[{0}]", poTobeAppended.ToString().Trim()));
  48. }
  49. return JoinString(pcSource, poTobeAppended);
  50. }
  51. /// <summary>
  52. /// 直接连接两个字符串
  53. /// </summary>
  54. /// <param name="pcSource"></param>
  55. /// <param name="poTobeAppended"></param>
  56. /// <returns></returns>
  57. public static string AppendToStr(string pcSource, object poTobeAppended)
  58. {
  59. string lcStr = GetDelimitedStr(poTobeAppended);
  60. pcSource = pcSource.Trim();
  61. if (pcSource != "")
  62. {
  63. lcStr = pcSource + "," + lcStr;
  64. }
  65. return lcStr;
  66. }
  67. /// <summary>
  68. /// 将一个Array转换成字符串,默认分割符为","
  69. /// </summary>
  70. /// <param name="paStr"></param>
  71. /// <returns></returns>
  72. public static string ArrayToStr(Array paStr)
  73. {
  74. return ArrayToStrEx(paStr, ",");
  75. }
  76. /// <summary>
  77. /// 根据传入的分割符号将Array 转换成字符串
  78. /// </summary>
  79. /// <param name="paStr"></param>
  80. /// <param name="pcSeparator"></param>
  81. /// <returns></returns>
  82. public static string ArrayToStrEx(Array paStr, string pcSeparator)
  83. {
  84. string lcStr = "";
  85. foreach (string lcStr2 in paStr)
  86. {
  87. lcStr = lcStr + ((lcStr == "") ? "" : pcSeparator) + GetDelimitedStr(lcStr2);
  88. }
  89. return lcStr;
  90. }
  91. /// <summary>
  92. /// 将字符串转换成Array 对象 ,以","为分割符。
  93. /// </summary>
  94. /// <param name="str"></param>
  95. /// <returns></returns>
  96. public static Array StrToArray(string str)
  97. {
  98. return StrToArrayEx(str, ",");
  99. }
  100. /// <summary>
  101. /// 将一个字符串以分割符转换成Array对象,如 a,[b,[c,d]],e 将分割成 a ; b,[c,d] ; e 三个串
  102. /// </summary>
  103. /// <param name="str"></param>
  104. /// <param name="separator"></param>
  105. /// <returns></returns>
  106. public static Array StrToArrayEx(string str, string separator)
  107. {
  108. ArrayList list1 = new ArrayList();
  109. str = str?.Trim() ?? "";
  110. int num1 = separator.Length;
  111. while (str.Length > 0)
  112. {
  113. int num2 = str.IndexOf(separator, StringComparison.Ordinal);
  114. int num3 = str.IndexOf("[", StringComparison.Ordinal);
  115. if ((num3 >= 0) && (num3 < num2))
  116. {
  117. int num4 = 1;
  118. int num5 = str.Length;
  119. int num6 = num3 + 1;
  120. while (num6 < num5)
  121. {
  122. switch (str[num6])
  123. {
  124. case '[':
  125. num4++;
  126. goto Label_0082;
  127. case '\\':
  128. goto Label_0082;
  129. case ']':
  130. break;
  131. default:
  132. goto Label_0082;
  133. }
  134. num4--;
  135. Label_0082:
  136. if (num4 == 0)
  137. {
  138. break;
  139. }
  140. num6++;
  141. }
  142. num2 = str.IndexOf(separator, num6, StringComparison.Ordinal);
  143. }
  144. if (num2 < 0)
  145. {
  146. num2 = str.Length;
  147. }
  148. string text1 = str.Substring(0, num2);
  149. int num7 = text1.Length;
  150. if (((num7 > 0) && (text1[0] == '[')) && (text1[num7 - 1] == ']'))
  151. {
  152. text1 = text1.Substring(1, num7 - 2);
  153. }
  154. list1.Add(text1.Trim());
  155. if ((num2 + num1) > str.Length)
  156. {
  157. str = "";
  158. }
  159. else
  160. {
  161. str = str.Substring(num2 + num1).Trim();
  162. }
  163. }
  164. Array array1 = Array.CreateInstance(typeof(string), list1.Count);
  165. list1.CopyTo(array1);
  166. return array1;
  167. }
  168. /// <summary>
  169. /// 将字符串转换成 Color 对象
  170. /// </summary>
  171. /// <param name="str"></param>
  172. /// <returns></returns>
  173. public static Color ColorFromStr(string str)
  174. {
  175. Color color1 = Color.Black;
  176. Array array1 = StrToArray(str);
  177. if (array1.Length >= 3)
  178. {
  179. int num1 = (int)Utils.ValD((string)array1.GetValue(0));
  180. int num2 = (int)Utils.ValD((string)array1.GetValue(1));
  181. int num3 = (int)Utils.ValD((string)array1.GetValue(2));
  182. color1 = Color.FromArgb(num1, num2, num3);
  183. }
  184. return color1;
  185. }
  186. /// <summary>
  187. /// Translate Color to String
  188. /// </summary>
  189. /// <param name="color"></param>
  190. /// <returns></returns>
  191. public static string ColorToStr(Color color)
  192. {
  193. return (color.R.ToString() + "," + color.G.ToString() + "," + color.B.ToString());
  194. }
  195. /// <summary>
  196. /// 从pcSource 末尾移除 pcRemoveStr
  197. /// </summary>
  198. /// <param name="pcSource"></param>
  199. /// <param name="pcRemoveStr"></param>
  200. /// <returns></returns>
  201. public static string TrimEnd(string pcSource, string pcRemoveStr)
  202. {
  203. char[] chArray1 = pcRemoveStr.ToCharArray();
  204. return pcSource.TrimEnd(chArray1);
  205. }
  206. /// <summary>
  207. /// 字符串转换成日期格式
  208. /// </summary>
  209. /// <param name="pcStr"></param>
  210. /// <returns></returns>
  211. public static DateTime StrToDt(string pcStr)
  212. {
  213. DateTime dateTime = new DateTime(1900, 1, 1);
  214. try
  215. {
  216. dateTime= DateTime.Parse(pcStr);
  217. return dateTime;
  218. }
  219. catch (Exception)
  220. {
  221. // ignored
  222. }
  223. return dateTime;
  224. }
  225. /// <summary>
  226. /// 将 piCount 个 pcString 串成一个字符串
  227. /// </summary>
  228. /// <param name="pcString"></param>
  229. /// <param name="piCount"></param>
  230. /// <returns></returns>
  231. public static string Replicate(string pcString, int piCount)
  232. {
  233. string text1 = "";
  234. for (int i = 0; i < piCount; i++)
  235. {
  236. text1 = text1 + pcString;
  237. }
  238. return text1;
  239. }
  240. /// <summary>
  241. /// Translate RectangleF to string
  242. /// </summary>
  243. /// <param name="rect"></param>
  244. /// <returns></returns>
  245. public static string RectToStr(RectangleF rect)
  246. {
  247. return (rect.X.ToString(CultureInfo.InvariantCulture) + "," + rect.Y.ToString(CultureInfo.InvariantCulture) + "," + rect.Width.ToString(CultureInfo.InvariantCulture) + "," + rect.Height.ToString(CultureInfo.InvariantCulture));
  248. }
  249. /// <summary>
  250. /// Translate string to RectangleF
  251. /// </summary>
  252. /// <param name="str"></param>
  253. /// <returns></returns>
  254. public static RectangleF RectFromStr(string str)
  255. {
  256. Array array1 = StrToArray(str);
  257. RectangleF ef1 = new Rectangle(0, 0, 0, 0);
  258. if (array1.Length >= 4)
  259. {
  260. ef1.X = (float)Utils.ValD((string)array1.GetValue(0));
  261. ef1.Y = (float)Utils.ValD((string)array1.GetValue(1));
  262. ef1.Width = (float)Utils.ValD((string)array1.GetValue(2));
  263. ef1.Height = (float)Utils.ValD((string)array1.GetValue(3));
  264. }
  265. return ef1;
  266. }
  267. /// <summary>
  268. /// PrinterSettings To String
  269. /// </summary>
  270. /// <param name="poSetting"></param>
  271. /// <returns></returns>
  272. public static string PrinterSettingToStr(PrinterSettings poSetting)
  273. {
  274. string text1 = "";
  275. text1 = AppendToStr(text1, "PrinterName=" + poSetting.PrinterName);
  276. text1 = AppendToStr(text1, "FromPage=" + poSetting.FromPage.ToString());
  277. text1 = AppendToStr(text1, "ToPage=" + poSetting.ToPage.ToString());
  278. return AppendToStr(text1, "Copies=" + poSetting.Copies.ToString());
  279. }
  280. /// <summary>
  281. /// String To PrinterSettings
  282. /// </summary>
  283. /// <param name="pcString"></param>
  284. /// <returns></returns>
  285. public static PrinterSettings PrinterSettingFromStr(string pcString)
  286. {
  287. PrinterSettings settings1 = new PrinterSettings();
  288. Array array1 = StrToArray(pcString);
  289. foreach (string text1 in array1)
  290. {
  291. Array array2 = StrToArrayEx(text1, "=");
  292. if (array2.Length == 2)
  293. {
  294. string text2 = array2.GetValue(0).ToString();
  295. string text3 = array2.GetValue(1).ToString();
  296. string text4 = string.IsInterned(text2);
  297. if (text4 != null)
  298. {
  299. //text4 = string.IsInterned(text4);
  300. if (text4 == "PrinterName")
  301. {
  302. settings1.PrinterName = text3;
  303. }
  304. else
  305. {
  306. if (text4 == "FromPage")
  307. {
  308. settings1.FromPage = Utils.ValI(text3);
  309. continue;
  310. }
  311. if (text4 == "ToPage")
  312. {
  313. settings1.ToPage = Utils.ValI(text3);
  314. continue;
  315. }
  316. if (text4 == "Copies")
  317. {
  318. settings1.Copies = (short)Utils.ValI(text3);
  319. }
  320. }
  321. }
  322. }
  323. }
  324. return settings1;
  325. }
  326. public static string PrinterPageSettingToStr(PrinterSettings poPrinter, PageSettings poPage)
  327. {
  328. if (poPage == null)
  329. {
  330. return ("[" + PrinterSettingToStr(poPrinter) + "],[Default]");
  331. }
  332. return ("[" + PrinterSettingToStr(poPrinter) + "],[" + PageSettingToStr(poPage) + "]");
  333. }
  334. public static string PageSettingToStr(PageSettings poSetting)
  335. {
  336. string text1 = "";
  337. text1 = AppendToStr(text1, "LeftMargin=" + poSetting.Margins.Left.ToString());
  338. text1 = AppendToStr(text1, "TopMargin=" + poSetting.Margins.Top.ToString());
  339. text1 = AppendToStr(text1, "RightMargin=" + poSetting.Margins.Right.ToString());
  340. text1 = AppendToStr(text1, "BottomMargin=" + poSetting.Margins.Bottom.ToString());
  341. text1 = AppendToStr(text1, "PaperSize=" + PaperSizeToStr(poSetting.PaperSize));
  342. text1 = AppendToStr(text1, "Landscape=" + (poSetting.Landscape ? "Yes" : "No"));
  343. return AppendToStr(text1, "PaperSource=" + poSetting.PaperSource.SourceName);
  344. }
  345. public static string PaperSizeToStr(PaperSize poPaper)
  346. {
  347. return JoinString(poPaper.Kind.ToString(), poPaper.Width.ToString(), poPaper.Height.ToString());
  348. }
  349. /// <summary>
  350. /// 将 几个对象的字符以 [],[],[],[] 格式连接起来
  351. /// </summary>
  352. /// <param name="poFirst"></param>
  353. /// <param name="poSecond"></param>
  354. /// <param name="poThird"></param>
  355. /// <param name="poFourth"></param>
  356. /// <returns></returns>
  357. public static string JoinString(object poFirst, object poSecond, object poThird, object poFourth)
  358. {
  359. return string.Format("[{0}],[{1}], [{2}], [{3}]", new object[] { poFirst.ToString().Trim(), poSecond.ToString().Trim(), poThird.ToString().Trim(), poFourth.ToString().Trim() });
  360. }
  361. /// <summary>
  362. /// 将 几个对象的字符以 [],[],[],[] 格式连接起来
  363. /// </summary>
  364. /// <param name="poFirst"></param>
  365. /// <param name="poSecond"></param>
  366. /// <param name="poThird"></param>
  367. /// <returns></returns>
  368. public static string JoinString(object poFirst, object poSecond, object poThird)
  369. {
  370. return string.Format("[{0}],[{1}], [{2}]", poFirst.ToString().Trim(), poSecond.ToString().Trim(), poThird.ToString().Trim());
  371. }
  372. public static string FontToStr(Font font)
  373. {
  374. string text1 = "Name:" + font.Name + ",Size:" + font.Size.ToString(CultureInfo.InvariantCulture);
  375. if (font.Underline)
  376. {
  377. text1 = text1 + ",Underline:Y";
  378. }
  379. if (font.Italic)
  380. {
  381. text1 = text1 + ",Italic:Y";
  382. }
  383. if (font.Strikeout)
  384. {
  385. text1 = text1 + ",Strikeout:Y";
  386. }
  387. if (font.Bold)
  388. {
  389. text1 = text1 + ",Bold:Y";
  390. }
  391. return text1;
  392. }
  393. /// <summary>
  394. /// 字符串转换成 Font 型
  395. /// </summary>
  396. /// <param name="str">传入字符串</param>
  397. /// <returns>返回的font</returns>
  398. ///
  399. public static Font FontFromStr(string str)
  400. {
  401. Array array1 = StrToArray(str);
  402. Hashtable hashtable1 = new Hashtable();
  403. for (int num1 = 0; num1 < array1.Length; num1++)
  404. {
  405. Array array2 = StrToArrayEx(array1.GetValue(num1).ToString(), ":");
  406. if (array2.Length == 2)
  407. {
  408. hashtable1.Add(array2.GetValue(0), array2.GetValue(1));
  409. }
  410. }
  411. string text1 = FontFamily.GenericSansSerif.Name;
  412. if (hashtable1.ContainsKey("Name"))
  413. {
  414. text1 = hashtable1["Name"].ToString();
  415. }
  416. float single1 = 8f;
  417. if (hashtable1.ContainsKey("Size"))
  418. {
  419. single1 = (float)Utils.ValD(hashtable1["Size"].ToString());
  420. }
  421. FontStyle style1 = FontStyle.Regular;
  422. if (hashtable1.ContainsKey("Bold"))
  423. {
  424. string text2 = hashtable1["Bold"].ToString();
  425. if (text2 == "Y")
  426. {
  427. style1 |= FontStyle.Bold;
  428. }
  429. }
  430. if (hashtable1.ContainsKey("Italic"))
  431. {
  432. string text3 = hashtable1["Italic"].ToString();
  433. if (text3 == "Y")
  434. {
  435. style1 |= FontStyle.Italic;
  436. }
  437. }
  438. if (hashtable1.ContainsKey("Underline"))
  439. {
  440. string text4 = hashtable1["Underline"].ToString();
  441. if (text4 == "Y")
  442. {
  443. style1 |= FontStyle.Underline;
  444. }
  445. }
  446. if (hashtable1.ContainsKey("Strikeout"))
  447. {
  448. string text5 = hashtable1["Strikeout"].ToString();
  449. if (text5 == "Y")
  450. {
  451. style1 |= FontStyle.Strikeout;
  452. }
  453. }
  454. return new Font(text1, single1, style1);
  455. }
  456. public static string UAndT(object poObject)
  457. {
  458. return UAndT(poObject.ToString());
  459. }
  460. /// <summary>
  461. /// 将一个字符串转换成大写
  462. /// </summary>
  463. /// <param name="pcStr"></param>
  464. /// <returns></returns>
  465. public static string UAndT(string pcStr)
  466. {
  467. if (pcStr == null)
  468. {
  469. pcStr = "";
  470. }
  471. return pcStr.ToUpper().Trim();
  472. }
  473. /// <summary>
  474. /// 111,22,333;aaa,vbb,dssa
  475. /// </summary>
  476. /// <param name="pcKeys"></param>
  477. /// <param name="pcValues"></param>
  478. /// <returns></returns>
  479. public static Hashtable StrToHashtable(string pcKeys, string pcValues)
  480. {
  481. Hashtable hashtable1 = null;
  482. Array array1 = StrToArray(pcKeys);
  483. Array array2 = StrToArray(pcValues);
  484. if (array1.Length == array2.Length)
  485. {
  486. hashtable1 = new Hashtable();
  487. for (int i = 0; i < array1.Length; i++)
  488. {
  489. if (!hashtable1.ContainsKey(UAndT(array1.GetValue(i))))
  490. hashtable1.Add(UAndT(array1.GetValue(i)), array2.GetValue(i));
  491. }
  492. }
  493. return hashtable1;
  494. }
  495. public static Dictionary<string, object> StrToDictionary(string pcKeys, string pcValues)
  496. {
  497. Dictionary<string, object> loRetVal = null;
  498. Array array1 = StrToArray(pcKeys);
  499. Array array2 = StrToArray(pcValues);
  500. if (array1.Length == array2.Length)
  501. {
  502. loRetVal = new Dictionary<string, object>();
  503. for (int i = 0; i < array1.Length; i++)
  504. {
  505. if (!loRetVal.ContainsKey(UAndT(array1.GetValue(i))))
  506. loRetVal.Add(UAndT(array1.GetValue(i)), array2.GetValue(i));
  507. }
  508. }
  509. return loRetVal;
  510. }
  511. /// <summary>
  512. /// 如果 传人的字符 为 TRUE、YES 或者 Y ,1 返回 true。
  513. /// </summary>
  514. /// <param name="pcStr"></param>
  515. /// <returns></returns>
  516. public static bool StrToBool(string pcStr)
  517. {
  518. pcStr = UAndT(pcStr);
  519. if (((pcStr != "TRUE") && (pcStr != "YES")) && (pcStr != "Y") && (pcStr != "1"))
  520. {
  521. return false;
  522. }
  523. return true;
  524. }
  525. public static string GetItemFromStrEx(string pcStr, int piIndex, string separator)
  526. {
  527. string lcRetVal = "";
  528. Array loArr = StrToArrayEx(pcStr, separator);
  529. if ((piIndex < loArr.Length) && (piIndex >= 0))
  530. {
  531. lcRetVal = loArr.GetValue(piIndex).ToString();
  532. }
  533. return lcRetVal;
  534. }
  535. public static string FormatStr(string pcString)
  536. {
  537. return pcString.Replace("[", "").Replace("]", "").Trim();
  538. }
  539. public static string StrFromObj(object poObj)
  540. {
  541. if (poObj == null)
  542. {
  543. return "";
  544. }
  545. return poObj.ToString().Trim();
  546. }
  547. /// <summary>
  548. /// 取文本左边内容
  549. /// </summary>
  550. /// <param name="str">文本</param>
  551. /// <param name="s">标识符</param>
  552. /// <returns>左边内容</returns>
  553. public static string GetLeft(string str, string s)
  554. {
  555. string temp = str.Substring(0, str.IndexOf(s, StringComparison.Ordinal));
  556. return temp;
  557. }
  558. /// <summary>
  559. /// 取文本右边内容
  560. /// </summary>
  561. /// <param name="str">文本</param>
  562. /// <param name="s">标识符</param>
  563. /// <returns>右边内容</returns>
  564. public static string GetRight(string str, string s)
  565. {
  566. string temp = str.Substring(str.IndexOf(s, StringComparison.Ordinal), str.Length - str.Substring(0, str.IndexOf(s, StringComparison.Ordinal)).Length);
  567. return temp;
  568. }
  569. /// <summary>
  570. /// 取文本中间内容
  571. /// </summary>
  572. /// <param name="str">原文本</param>
  573. /// <param name="leftstr">左边文本</param>
  574. /// <param name="rightstr">右边文本</param>
  575. /// <returns>返回中间文本内容</returns>
  576. public static string Between(string str, string leftstr, string rightstr)
  577. {
  578. int i = str.IndexOf(leftstr, StringComparison.Ordinal) + leftstr.Length;
  579. string temp = str.Substring(i, str.IndexOf(rightstr, i, StringComparison.Ordinal) - i);
  580. return temp;
  581. }
  582. /// <summary>
  583. /// 取文本中间到List集合
  584. /// </summary>
  585. /// <param name="str">文本字符串</param>
  586. /// <param name="leftstr">左边文本</param>
  587. /// <param name="rightstr">右边文本</param>
  588. /// <returns>List集合</returns>
  589. public List<string> BetweenArr(string str, string leftstr, string rightstr)
  590. {
  591. List<string> list = new List<string>();
  592. int leftIndex = str.IndexOf(leftstr, StringComparison.Ordinal);//左文本起始位置
  593. int leftlength = leftstr.Length;//左文本长度
  594. while (leftIndex != -1)
  595. {
  596. int rightIndex = str.IndexOf(rightstr, leftIndex + leftlength, StringComparison.Ordinal);
  597. if (rightIndex == -1)
  598. {
  599. break;
  600. }
  601. string temp = str.Substring(leftIndex + leftlength, rightIndex - leftIndex - leftlength);
  602. list.Add(temp);
  603. leftIndex = str.IndexOf(leftstr, rightIndex + 1, StringComparison.Ordinal);
  604. }
  605. return list;
  606. }
  607. /// <summary>
  608. /// 指定文本倒序
  609. /// </summary>
  610. /// <param name="str">文本</param>
  611. /// <returns>倒序文本</returns>
  612. public static string StrReverse(string str)
  613. {
  614. char[] chars = str.ToCharArray();
  615. StringBuilder sb = new StringBuilder();
  616. for (int i = 0; i < chars.Length; i++)
  617. {
  618. sb.Append(chars[chars.Length - 1 - i]);
  619. }
  620. return sb.ToString();
  621. }
  622. ///<summary>
  623. ///得到随机字符.
  624. ///</summary>
  625. ///<param name="intLength">Length of the int.</param>
  626. ///<param name="booNumber">if set to <c>true</c> [boo number].</param>
  627. ///<param name="booSign">if set to <c>true</c> [boo sign].</param>
  628. ///<param name="booSmallword">if set to <c>true</c> [boo smallword].</param>
  629. ///<param name="booBigword">if set to <c>true</c> [boo bigword].</param>
  630. ///<returns></returns>
  631. public static string GetRandomizer(int intLength, bool booNumber, bool booSign, bool booSmallword, bool booBigword)
  632. {
  633. //定义
  634. Random ranA = new Random();
  635. int intResultRound = 0;
  636. string strB = "";
  637. while (intResultRound < intLength)
  638. {
  639. //生成随机数A,表示生成类型
  640. //1=数字,2=符号,3=小写字母,4=大写字母
  641. var intA = ranA.Next(1, 5);
  642. //如果随机数A=1,则运行生成数字
  643. //生成随机数A,范围在0-10
  644. //把随机数A,转成字符
  645. //生成完,位数+1,字符串累加,结束本次循环
  646. if (intA == 1 && booNumber)
  647. {
  648. intA = ranA.Next(0, 10);
  649. strB = intA + strB;
  650. intResultRound = intResultRound + 1;
  651. continue;
  652. }
  653. //如果随机数A=2,则运行生成符号
  654. //生成随机数A,表示生成值域
  655. //1:33-47值域,2:58-64值域,3:91-96值域,4:123-126值域
  656. if (intA == 2 && booSign)
  657. {
  658. intA = ranA.Next(1, 5);
  659. //如果A=1
  660. //生成随机数A,33-47的Ascii码
  661. //把随机数A,转成字符
  662. //生成完,位数+1,字符串累加,结束本次循环
  663. if (intA == 1)
  664. {
  665. intA = ranA.Next(33, 48);
  666. strB = ((char)intA) + strB;
  667. intResultRound = intResultRound + 1;
  668. continue;
  669. }
  670. //如果A=2
  671. //生成随机数A,58-64的Ascii码
  672. //把随机数A,转成字符
  673. //生成完,位数+1,字符串累加,结束本次循环
  674. if (intA == 2)
  675. {
  676. intA = ranA.Next(58, 65);
  677. strB = ((char)intA) + strB;
  678. intResultRound = intResultRound + 1;
  679. continue;
  680. }
  681. //如果A=3
  682. //生成随机数A,91-96的Ascii码
  683. //把随机数A,转成字符
  684. //生成完,位数+1,字符串累加,结束本次循环
  685. if (intA == 3)
  686. {
  687. intA = ranA.Next(91, 97);
  688. strB = ((char)intA) + strB;
  689. intResultRound = intResultRound + 1;
  690. continue;
  691. }
  692. //如果A=4
  693. //生成随机数A,123-126的Ascii码
  694. //把随机数A,转成字符
  695. //生成完,位数+1,字符串累加,结束本次循环
  696. if (intA == 4)
  697. {
  698. intA = ranA.Next(123, 127);
  699. strB = ((char)intA) + strB;
  700. intResultRound = intResultRound + 1;
  701. continue;
  702. }
  703. }
  704. //如果随机数A=3,则运行生成小写字母
  705. //生成随机数A,范围在97-122
  706. //把随机数A,转成字符
  707. //生成完,位数+1,字符串累加,结束本次循环
  708. if (intA == 3 && booSmallword)
  709. {
  710. intA = ranA.Next(97, 123);
  711. strB = ((char)intA) + strB;
  712. intResultRound = intResultRound + 1;
  713. continue;
  714. }
  715. //如果随机数A=4,则运行生成大写字母
  716. //生成随机数A,范围在65-90
  717. //把随机数A,转成字符
  718. //生成完,位数+1,字符串累加,结束本次循环
  719. if (intA == 4 && booBigword)
  720. {
  721. intA = ranA.Next(65, 89);
  722. strB = ((char)intA) + strB;
  723. intResultRound = intResultRound + 1;
  724. }
  725. }
  726. return strB;
  727. }
  728. //随机字符串生成器的主要功能如下:
  729. //1、支持自定义字符串长度
  730. //2、支持自定义是否包含数字
  731. //3、支持自定义是否包含小写字母
  732. //4、支持自定义是否包含大写字母
  733. //5、支持自定义是否包含特殊符号
  734. //6、支持自定义字符集
  735. ///<summary>
  736. ///生成随机字符串
  737. ///</summary>
  738. ///<param name="length">目标字符串的长度</param>
  739. ///<param name="useNum">是否包含数字,1=包含,默认为包含</param>
  740. ///<param name="useLow">是否包含小写字母,1=包含,默认为包含</param>
  741. ///<param name="useUpp">是否包含大写字母,1=包含,默认为包含</param>
  742. ///<param name="useSpe">是否包含特殊字符,1=包含,默认为不包含</param>
  743. ///<param name="custom">要包含的自定义字符,直接输入要包含的字符列表</param>
  744. ///<returns>指定长度的随机字符串</returns>
  745. public static string GetRnd(int length, bool useNum, bool useLow, bool useUpp, bool useSpe, string custom)
  746. {
  747. byte[] b = new byte[4];
  748. new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
  749. Random r = new Random(BitConverter.ToInt32(b, 0));
  750. string s = null, str = custom;
  751. if (useNum) { str += "0123456789"; }
  752. if (useLow) { str += "abcdefghijklmnopqrstuvwxyz"; }
  753. if (useUpp) { str += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; }
  754. if (useSpe) { str += "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"; }
  755. for (int i = 0; i < length; i++)
  756. {
  757. s += str.Substring(r.Next(0, str.Length - 1), 1);
  758. }
  759. return s;
  760. }
  761. }
  762. }