Bez popisu

StringUtil.cs 34KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Text.RegularExpressions;
  6. namespace XYFDRQ.Common
  7. {
  8. /// <summary>
  9. /// 字符串操作工具集
  10. /// </summary>
  11. public class StringUtil
  12. {
  13. public StringUtil()
  14. {
  15. //
  16. // TODO: 在此处添加构造函数逻辑
  17. //
  18. }
  19. /// <summary>
  20. /// 从字符串中的尾部删除指定的字符串
  21. /// </summary>
  22. /// <param name="sourceString"></param>
  23. /// <param name="removedString"></param>
  24. /// <returns></returns>
  25. public static string Remove(string sourceString, string removedString)
  26. {
  27. try
  28. {
  29. if (sourceString.IndexOf(removedString) < 0)
  30. throw new Exception("原字符串中不包含移除字符串!");
  31. string result = sourceString;
  32. int lengthOfSourceString = sourceString.Length;
  33. int lengthOfRemovedString = removedString.Length;
  34. int startIndex = lengthOfSourceString - lengthOfRemovedString;
  35. string tempSubString = sourceString.Substring(startIndex);
  36. if (tempSubString.ToUpper() == removedString.ToUpper())
  37. {
  38. result = sourceString.Remove(startIndex, lengthOfRemovedString);
  39. }
  40. return result;
  41. }
  42. catch
  43. {
  44. return sourceString;
  45. }
  46. }
  47. /// <summary>
  48. /// 获取拆分符右边的字符串
  49. /// </summary>
  50. /// <param name="sourceString"></param>
  51. /// <param name="splitChar"></param>
  52. /// <returns></returns>
  53. public static string RightSplit(string sourceString, char splitChar)
  54. {
  55. string result = null;
  56. string[] tempString = sourceString.Split(splitChar);
  57. if (tempString.Length > 0)
  58. {
  59. result = tempString[tempString.Length - 1].ToString();
  60. }
  61. return result;
  62. }
  63. /// <summary>
  64. /// 获取拆分符左边的字符串
  65. /// </summary>
  66. /// <param name="sourceString"></param>
  67. /// <param name="splitChar"></param>
  68. /// <returns></returns>
  69. public static string LeftSplit(string sourceString, char splitChar)
  70. {
  71. string result = null;
  72. string[] tempString = sourceString.Split(splitChar);
  73. if (tempString.Length > 0)
  74. {
  75. result = tempString[0].ToString();
  76. }
  77. return result;
  78. }
  79. /// <summary>
  80. /// 去掉最后一个逗号
  81. /// </summary>
  82. /// <param name="origin"></param>
  83. /// <returns></returns>
  84. public static string DelLastComma(string origin)
  85. {
  86. if (origin.IndexOf(",") == -1)
  87. {
  88. return origin;
  89. }
  90. return origin.Substring(0, origin.LastIndexOf(","));
  91. }
  92. /// <summary>
  93. /// 删除不可见字符
  94. /// </summary>
  95. /// <param name="sourceString"></param>
  96. /// <returns></returns>
  97. public static string DeleteUnVisibleChar(string sourceString)
  98. {
  99. System.Text.StringBuilder sBuilder = new System.Text.StringBuilder(131);
  100. for (int i = 0; i < sourceString.Length; i++)
  101. {
  102. int Unicode = sourceString[i];
  103. if (Unicode >= 16)
  104. {
  105. sBuilder.Append(sourceString[i].ToString());
  106. }
  107. }
  108. return sBuilder.ToString();
  109. }
  110. /// <summary>
  111. /// 获取数组元素的合并字符串
  112. /// </summary>
  113. /// <param name="stringArray"></param>
  114. /// <returns></returns>
  115. public static string GetArrayString(string[] stringArray)
  116. {
  117. string totalString = null;
  118. for (int i = 0; i < stringArray.Length; i++)
  119. {
  120. totalString = totalString + stringArray[i];
  121. }
  122. return totalString;
  123. }
  124. /// <summary>
  125. /// 获取某一字符串在字符串数组中出现的次数
  126. /// </summary>
  127. /// <param name="stringArray" type="string[]">
  128. /// <para>
  129. ///
  130. /// </para>
  131. /// </param>
  132. /// <param name="findString" type="string">
  133. /// <para>
  134. ///
  135. /// </para>
  136. /// </param>
  137. /// <returns>
  138. /// A int value...
  139. /// </returns>
  140. public static int GetStringCount(string[] stringArray, string findString)
  141. {
  142. int count = -1;
  143. string totalString = GetArrayString(stringArray);
  144. string subString = totalString;
  145. while (subString.IndexOf(findString) >= 0)
  146. {
  147. subString = totalString.Substring(subString.IndexOf(findString));
  148. count += 1;
  149. }
  150. return count;
  151. }
  152. /// <summary>
  153. /// 获取某一字符串在字符串中出现的次数
  154. /// </summary>
  155. /// <param name="stringArray" type="string">
  156. /// <para>
  157. /// 原字符串
  158. /// </para>
  159. /// </param>
  160. /// <param name="findString" type="string">
  161. /// <para>
  162. /// 匹配字符串
  163. /// </para>
  164. /// </param>
  165. /// <returns>
  166. /// 匹配字符串数量
  167. /// </returns>
  168. public static int GetStringCount(string sourceString, string findString)
  169. {
  170. int count = 0;
  171. int findStringLength = findString.Length;
  172. string subString = sourceString;
  173. while (subString.IndexOf(findString) >= 0)
  174. {
  175. subString = subString.Substring(subString.IndexOf(findString) + findStringLength);
  176. count += 1;
  177. }
  178. return count;
  179. }
  180. /// <summary>
  181. /// 截取从startString开始到原字符串结尾的所有字符
  182. /// </summary>
  183. /// <param name="sourceString" type="string">
  184. /// <para>
  185. ///
  186. /// </para>
  187. /// </param>
  188. /// <param name="startString" type="string">
  189. /// <para>
  190. ///
  191. /// </para>
  192. /// </param>
  193. /// <returns>
  194. /// A string value...
  195. /// </returns>
  196. public static string GetSubString(string sourceString, string startString)
  197. {
  198. try
  199. {
  200. int index = sourceString.ToUpper().IndexOf(startString);
  201. if (index > 0)
  202. {
  203. return sourceString.Substring(index);
  204. }
  205. return sourceString;
  206. }
  207. catch
  208. {
  209. return "";
  210. }
  211. }
  212. public static string GetSubString(string sourceString, string beginRemovedString, string endRemovedString)
  213. {
  214. try
  215. {
  216. if (sourceString.IndexOf(beginRemovedString) != 0)
  217. beginRemovedString = "";
  218. if (sourceString.LastIndexOf(endRemovedString, sourceString.Length - endRemovedString.Length) < 0)
  219. endRemovedString = "";
  220. int startIndex = beginRemovedString.Length;
  221. int length = sourceString.Length - beginRemovedString.Length - endRemovedString.Length;
  222. if (length > 0)
  223. {
  224. return sourceString.Substring(startIndex, length);
  225. }
  226. return sourceString;
  227. }
  228. catch
  229. {
  230. return sourceString; ;
  231. }
  232. }
  233. /// <summary>
  234. /// 按字节数取出字符串的长度
  235. /// </summary>
  236. /// <param name="strTmp">要计算的字符串</param>
  237. /// <returns>字符串的字节数</returns>
  238. public static int GetByteCount(string strTmp)
  239. {
  240. int intCharCount = 0;
  241. for (int i = 0; i < strTmp.Length; i++)
  242. {
  243. if (System.Text.UTF8Encoding.UTF8.GetByteCount(strTmp.Substring(i, 1)) == 3)
  244. {
  245. intCharCount = intCharCount + 2;
  246. }
  247. else
  248. {
  249. intCharCount = intCharCount + 1;
  250. }
  251. }
  252. return intCharCount;
  253. }
  254. /// <summary>
  255. /// 按字节数要在字符串的位置
  256. /// </summary>
  257. /// <param name="intIns">字符串的位置</param>
  258. /// <param name="strTmp">要计算的字符串</param>
  259. /// <returns>字节的位置</returns>
  260. public static int GetByteIndex(int intIns, string strTmp)
  261. {
  262. int intReIns = 0;
  263. if (strTmp.Trim() == "")
  264. {
  265. return intIns;
  266. }
  267. for (int i = 0; i < strTmp.Length; i++)
  268. {
  269. if (System.Text.UTF8Encoding.UTF8.GetByteCount(strTmp.Substring(i, 1)) == 3)
  270. {
  271. intReIns = intReIns + 2;
  272. }
  273. else
  274. {
  275. intReIns = intReIns + 1;
  276. }
  277. if (intReIns >= intIns)
  278. {
  279. intReIns = i + 1;
  280. break;
  281. }
  282. }
  283. return intReIns;
  284. }
  285. /// <summary>
  286. /// 判断数据是否为数值类型
  287. /// </summary>
  288. /// <param name="s"></param>
  289. /// <returns></returns>
  290. public static bool isNumber(string s)
  291. {
  292. int Flag = 0;
  293. char[] str = s.ToCharArray();
  294. for (int i = 0; i < str.Length; i++)
  295. {
  296. if (Char.IsNumber(str[i]))
  297. {
  298. Flag++;
  299. }
  300. else
  301. {
  302. Flag = -1;
  303. break;
  304. }
  305. }
  306. if (Flag > 0)
  307. {
  308. return true;
  309. }
  310. else
  311. {
  312. return false;
  313. }
  314. }
  315. #region 获取IP
  316. public static string GetUserIpAddress(System.Web.HttpContext context)
  317. {
  318. string result = String.Empty;
  319. if (context == null) return result;
  320. result = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
  321. if (null == result || result == String.Empty)
  322. result = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
  323. return result;
  324. }
  325. #endregion
  326. #region 过滤危险数据库字符
  327. /// <summary>
  328. /// 过滤危险数据库字符
  329. /// </summary>
  330. /// <param name="objString">要过滤的危险字符</param>
  331. public static string ReplaceDangerString(string objString)
  332. {
  333. objString = objString.Trim();
  334. objString = objString.Replace("%", "");
  335. objString = objString.Replace("'", "");
  336. objString = objString.Replace("=", "");
  337. objString = objString.Replace(">", "");
  338. objString = objString.Replace("<", "");
  339. objString = objString.Replace("+", "");
  340. objString = objString.Replace("&", "");
  341. objString = objString.Replace("\"", "");
  342. objString = objString.Replace("--", "");
  343. return objString;
  344. }
  345. #endregion
  346. #region HTML 代码过滤
  347. public static string ClearHtmlCode(string text)
  348. {
  349. Regex regex1 = new Regex(@"<script[\s\S]+</script *>", RegexOptions.IgnoreCase);
  350. Regex regex2 = new Regex(@" href *= *[\s\S]*script *:", RegexOptions.IgnoreCase);
  351. Regex regex3 = new Regex(@" no[\s\S]*=", RegexOptions.IgnoreCase);
  352. Regex regex4 = new Regex(@"<iframe[\s\S]+</iframe *>", RegexOptions.IgnoreCase);
  353. Regex regex5 = new Regex(@"<frameset[\s\S]+</frameset *>", RegexOptions.IgnoreCase);
  354. Regex regex6 = new Regex(@"\<img[^\>]+\>", RegexOptions.IgnoreCase);
  355. Regex regex7 = new Regex(@"</p>", RegexOptions.IgnoreCase);
  356. Regex regex8 = new Regex(@"<p>", RegexOptions.IgnoreCase);
  357. Regex regex9 = new Regex(@"<[^>]*>", RegexOptions.IgnoreCase);
  358. Regex regex10 = new Regex(@"[\s]{2,}", RegexOptions.IgnoreCase);
  359. Regex regex11 = new Regex(@"(<[b|B][r|R]/*>)+|(<[p|P](.|\n)*?>)", RegexOptions.IgnoreCase);
  360. Regex regex12 = new Regex(@"(\s*&[n|N][b|B][s|S][p|P];\s*)+", RegexOptions.IgnoreCase);
  361. Regex regex13 = new Regex(@"<(.|\n)*?>", RegexOptions.IgnoreCase);
  362. Regex regex14 = new Regex(@"/<\/?[^>]*>/g", RegexOptions.IgnoreCase);
  363. Regex regex15 = new Regex(@"/[ | ]* /g", RegexOptions.IgnoreCase);
  364. Regex regex16 = new Regex(@"/ [\s| | ]* /g", RegexOptions.IgnoreCase);
  365. text = regex1.Replace(text, string.Empty); //过滤<script></script>标记
  366. text = regex2.Replace(text, string.Empty); //过滤href=javascript: (<A>) 属性
  367. text = regex3.Replace(text, " _disibledevent="); //过滤其它控件的on...事件
  368. text = regex4.Replace(text, string.Empty); //过滤iframe
  369. text = regex5.Replace(text, string.Empty); //过滤frameset
  370. text = regex6.Replace(text, string.Empty); //过滤frameset
  371. text = regex7.Replace(text, string.Empty); //过滤frameset
  372. text = regex8.Replace(text, string.Empty); //过滤frameset
  373. text = regex9.Replace(text, string.Empty);
  374. text = regex10.Replace(text, " "); //两个或者更多的空格
  375. text = regex11.Replace(text, string.Empty); //<br>
  376. text = regex12.Replace(text, " "); //&nbsp;
  377. text = regex13.Replace(text, string.Empty); // 其他标记
  378. text = regex14.Replace(text, string.Empty); // 其他标记
  379. text = regex15.Replace(text, string.Empty); // 其他标记
  380. text = regex16.Replace(text, string.Empty); // 其他标记
  381. text = text.Replace(" ", "");
  382. text = text.Replace("</strong>", "");
  383. text = text.Replace("<strong>", "");
  384. return text;
  385. }
  386. #endregion
  387. #region 限制字符显示长度,用于限制标题等一些文本的显示长度
  388. /// <summary>
  389. /// 限制字符显示长度,用于限制标题等一些文本的显示长度
  390. /// </summary>
  391. /// <param name="inputstr">需要限制的字符</param>
  392. /// <param name="len">限制的长度</param>
  393. /// <returns></returns>
  394. public static string cutstring(string inputstr, int len)
  395. {
  396. ASCIIEncoding asci = new ASCIIEncoding();
  397. int strlen = 0;
  398. string str = null;
  399. byte[] s = asci.GetBytes(inputstr);
  400. for (int i = 0; i < s.Length; i++)
  401. {
  402. if ((int)s[i] == 63)
  403. {
  404. strlen += 2;
  405. }
  406. else
  407. {
  408. strlen += 1;
  409. }
  410. try
  411. {
  412. str += inputstr.Substring(i, 1);
  413. }
  414. catch
  415. {
  416. break;
  417. }
  418. if (strlen > len)
  419. break;
  420. }
  421. byte[] mybyte = Encoding.Default.GetBytes(inputstr);
  422. if (mybyte.Length > len)
  423. {
  424. str += "…";
  425. }
  426. return str;
  427. }
  428. #endregion
  429. #region 根据汉字获取拼音码
  430. /// <summary>
  431. /// 根据汉字获取拼音码
  432. /// </summary>
  433. /// <param name="hz">传入汉字参数</param>
  434. /// <returns></returns>
  435. public static string GetFirstLetter(string hz)
  436. {
  437. string ls_second_eng = "CJWGNSPGCGNESYPBTYYZDXYKYGTDJNNJQMBSGZSCYJSYYQPGKBZGYCYWJKGKLJSWKPJQHYTWDDZLSGMRYPYWWCCKZNKYDGTTNGJEYKKZYTCJNMCYLQLYPYQFQRPZSLWBTGKJFYXJWZLTBNCXJJJJZXDTTSQZYCDXXHGCKBPHFFSSWYBGMXLPBYLLLHLXSPZMYJHSOJNGHDZQYKLGJHSGQZHXQGKEZZWYSCSCJXYEYXADZPMDSSMZJZQJYZCDJZWQJBDZBXGZNZCPWHKXHQKMWFBPBYDTJZZKQHYLYGXFPTYJYYZPSZLFCHMQSHGMXXSXJJSDCSBBQBEFSJYHWWGZKPYLQBGLDLCCTNMAYDDKSSNGYCSGXLYZAYBNPTSDKDYLHGYMYLCXPYCJNDQJWXQXFYYFJLEJBZRXCCQWQQSBNKYMGPLBMJRQCFLNYMYQMSQTRBCJTHZTQFRXQ" +
  438. "HXMJJCJLXQGJMSHZKBSWYEMYLTXFSYDSGLYCJQXSJNQBSCTYHBFTDCYZDJWYGHQFRXWCKQKXEBPTLPXJZSRMEBWHJLBJSLYYSMDXLCLQKXLHXJRZJMFQHXHWYWSBHTRXXGLHQHFNMNYKLDYXZPWLGGTMTCFPAJJZYLJTYANJGBJPLQGDZYQYAXBKYSECJSZNSLYZHZXLZCGHPXZHZNYTDSBCJKDLZAYFMYDLEBBGQYZKXGLDNDNYSKJSHDLYXBCGHXYPKDJMMZNGMMCLGWZSZXZJFZNMLZZTHCSYDBDLLSCDDNLKJYKJSYCJLKOHQASDKNHCSGANHDAASHTCPLCPQYBSDMPJLPCJOQLCDHJJYSPRCHNWJNLHLYYQYYWZPTCZGWWMZFFJQQQQYXACLBHKDJXDGMMYDJXZLLSYGXGKJRYWZWYCLZMSSJZLDBYDCFCXYHLXCHYZJQSFQAGMNYXPFRKSSB" +
  439. "JLYXYSYGLNSCMHCWWMNZJJLXXHCHSYDSTTXRYCYXBYHCSMXJSZNPWGPXXTAYBGAJCXLYSDCCWZOCWKCCSBNHCPDYZNFCYYTYCKXKYBSQKKYTQQXFCWCHCYKELZQBSQYJQCCLMTHSYWHMKTLKJLYCXWHEQQHTQHZPQSQSCFYMMDMGBWHWLGSSLYSDLMLXPTHMJHWLJZYHZJXHTXJLHXRSWLWZJCBXMHZQXSDZPMGFCSGLSXYMJSHXPJXWMYQKSMYPLRTHBXFTPMHYXLCHLHLZYLXGSSSSTCLSLDCLRPBHZHXYYFHBBGDMYCNQQWLQHJJZYWJZYEJJDHPBLQXTQKWHLCHQXAGTLXLJXMSLXHTZKZJECXJCJNMFBYCSFYWYBJZGNYSDZSQYRSLJPCLPWXSDWEJBJCBCNAYTWGMPAPCLYQPCLZXSBNMSGGFNZJJBZSFZYNDXHPLQKZCZWALSBCCJXJYZGWKYP" +
  440. "SGXFZFCDKHJGXDLQFSGDSLQWZKXTMHSBGZMJZRGLYJBPMLMSXLZJQQHZYJCZYDJWBMJKLDDPMJEGXYHYLXHLQYQHKYCWCJMYYXNATJHYCCXZPCQLBZWWYTWBQCMLPMYRJCCCXFPZNZZLJPLXXYZTZLGDLDCKLYRZZGQTGJHHHJLJAXFGFJZSLCFDQZLCLGJDJCSNCLLJPJQDCCLCJXMYZFTSXGCGSBRZXJQQCTZHGYQTJQQLZXJYLYLBCYAMCSTYLPDJBYREGKLZYZHLYSZQLZNWCZCLLWJQJJJKDGJZOLBBZPPGLGHTGZXYGHZMYCNQSYCYHBHGXKAMTXYXNBSKYZZGJZLQJDFCJXDYGJQJJPMGWGJJJPKQSBGBMMCJSSCLPQPDXCDYYKYFCJDDYYGYWRHJRTGZNYQLDKLJSZZGZQZJGDYKSHPZMTLCPWNJAFYZDJCNMWESCYGLBTZCGMSSLLYXQSXSBSJS" +
  441. "BBSGGHFJLWPMZJNLYYWDQSHZXTYYWHMCYHYWDBXBTLMSYYYFSXJCSDXXLHJHFSSXZQHFZMZCZTQCXZXRTTDJHNNYZQQMNQDMMGYYDXMJGDHCDYZBFFALLZTDLTFXMXQZDNGWQDBDCZJDXBZGSQQDDJCMBKZFFXMKDMDSYYSZCMLJDSYNSPRSKMKMPCKLGDBQTFZSWTFGGLYPLLJZHGJJGYPZLTCSMCNBTJBQFKTHBYZGKPBBYMTTSSXTBNPDKLEYCJNYCDYKZDDHQHSDZSCTARLLTKZLGECLLKJLQJAQNBDKKGHPJTZQKSECSHALQFMMGJNLYJBBTMLYZXDCJPLDLPCQDHZYCBZSCZBZMSLJFLKRZJSNFRGJHXPDHYJYBZGDLQCSEZGXLBLGYXTWMABCHECMWYJYZLLJJYHLGBDJLSLYGKDZPZXJYYZLWCXSZFGWYYDLYHCLJSCMBJHBLYZLYCBLYDPDQYSXQZB" +
  442. "YTDKYXJYYCNRJMDJGKLCLJBCTBJDDBBLBLCZQRPXJCGLZCSHLTOLJNMDDDLNGKAQHQHJGYKHEZNMSHRPHQQJCHGMFPRXHJGDYCHGHLYRZQLCYQJNZSQTKQJYMSZSWLCFQQQXYFGGYPTQWLMCRNFKKFSYYLQBMQAMMMYXCTPSHCPTXXZZSMPHPSHMCLMLDQFYQXSZYJDJJZZHQPDSZGLSTJBCKBXYQZJSGPSXQZQZRQTBDKYXZKHHGFLBCSMDLDGDZDBLZYYCXNNCSYBZBFGLZZXSWMSCCMQNJQSBDQSJTXXMBLTXZCLZSHZCXRQJGJYLXZFJPHYMZQQYDFQJJLZZNZJCDGZYGCTXMZYSCTLKPHTXHTLBJXJLXSCDQXCBBTJFQZFSLTJBTKQBXXJJLJCHCZDBZJDCZJDCPRNPQCJPFCZLCLZXZDMXMPHJSGZGSZZQJYLWTJPFSYASMCJBTZKYCWMYTCSJJLJCQLWZM" +
  443. "ALBXYFBPNLSFHTGJWEJJXXGLLJSTGSHJQLZFKCGNNDSZFDEQFHBSAQTGLLBXMMYGSZLDYDQMJJRGBJTKGDHGKBLQKBDMBYLXWCXYTTYBKMRTJZXQJBHLMHMJJZMQASLDCYXYQDLQCAFYWYXQHZ";
  444. string ls_second_ch = "亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟" +
  445. "鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼" +
  446. "陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻" +
  447. "莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩" +
  448. "咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾" +
  449. "舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂" +
  450. "溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃" +
  451. "缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶" +
  452. "轸轷轹轺轼轾辁辂辄辇辋辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱" +
  453. "煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪铩铫铮铯铳铴铵铷铹铼" +
  454. "铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦疋胥皲皴矜耒" +
  455. "耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟" +
  456. "羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋鳌鳍鳎鳏鳐鳓鳔" +
  457. "鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄";
  458. byte[] array = new byte[2];
  459. string return_py = "";
  460. for (int i = 0; i < hz.Length; i++)
  461. {
  462. array = System.Text.Encoding.Default.GetBytes(hz[i].ToString());
  463. if (array[0] < 176) //.非汉字
  464. {
  465. return_py += hz[i];
  466. }
  467. else if (array[0] >= 176 && array[0] <= 215) //一级汉字
  468. {
  469. if (hz[i].ToString().CompareTo("匝") >= 0)
  470. return_py += "z";
  471. else if (hz[i].ToString().CompareTo("压") >= 0)
  472. return_py += "y";
  473. else if (hz[i].ToString().CompareTo("昔") >= 0)
  474. return_py += "x";
  475. else if (hz[i].ToString().CompareTo("挖") >= 0)
  476. return_py += "w";
  477. else if (hz[i].ToString().CompareTo("塌") >= 0)
  478. return_py += "t";
  479. else if (hz[i].ToString().CompareTo("撒") >= 0)
  480. return_py += "s";
  481. else if (hz[i].ToString().CompareTo("然") >= 0)
  482. return_py += "r";
  483. else if (hz[i].ToString().CompareTo("期") >= 0)
  484. return_py += "q";
  485. else if (hz[i].ToString().CompareTo("啪") >= 0)
  486. return_py += "p";
  487. else if (hz[i].ToString().CompareTo("哦") >= 0)
  488. return_py += "o";
  489. else if (hz[i].ToString().CompareTo("拿") >= 0)
  490. return_py += "n";
  491. else if (hz[i].ToString().CompareTo("妈") >= 0)
  492. return_py += "m";
  493. else if (hz[i].ToString().CompareTo("垃") >= 0)
  494. return_py += "l";
  495. else if (hz[i].ToString().CompareTo("喀") >= 0)
  496. return_py += "k";
  497. else if (hz[i].ToString().CompareTo("击") >= 0)
  498. return_py += "j";
  499. else if (hz[i].ToString().CompareTo("哈") >= 0)
  500. return_py += "h";
  501. else if (hz[i].ToString().CompareTo("噶") >= 0)
  502. return_py += "g";
  503. else if (hz[i].ToString().CompareTo("发") >= 0)
  504. return_py += "f";
  505. else if (hz[i].ToString().CompareTo("蛾") >= 0)
  506. return_py += "e";
  507. else if (hz[i].ToString().CompareTo("搭") >= 0)
  508. return_py += "d";
  509. else if (hz[i].ToString().CompareTo("擦") >= 0)
  510. return_py += "c";
  511. else if (hz[i].ToString().CompareTo("芭") >= 0)
  512. return_py += "b";
  513. else if (hz[i].ToString().CompareTo("啊") >= 0)
  514. return_py += "a";
  515. }
  516. else if (array[0] >= 215) //二级汉字
  517. {
  518. return_py += ls_second_eng.Substring(ls_second_ch.IndexOf(hz[i].ToString(), 0), 1);
  519. }
  520. }
  521. return return_py.ToUpper();
  522. }
  523. #endregion
  524. #region 检测字符串是否符合登录字符串的安全要求
  525. /// <summary>
  526. /// 检测字符串是否符合登录字符串的安全要求
  527. /// </summary>
  528. /// <param name="strInputStr">输入字符串</param>
  529. /// <returns>true/false</returns>
  530. public static bool isDangerString(string strInputStr)
  531. {
  532. string strDangerString = "'  &<>?%,;:()`~!@#$^*{}[]|+-=" + Convert.ToChar(34) + Convert.ToChar(9) + Convert.ToChar(32);
  533. int intLenght = strDangerString.Length;
  534. bool blResult = true;
  535. string strTemp; int intTemp;
  536. for (int i = 1; i < intLenght; i++)
  537. {
  538. strTemp = strDangerString.Substring(i, 1);
  539. intTemp = strInputStr.IndexOf(strDangerString.Substring(i, 1), 0, strInputStr.Length);
  540. if (strInputStr.IndexOf(strDangerString.Substring(i, 1), 0, strInputStr.Length) >= 0)
  541. {
  542. blResult = false;
  543. break;
  544. }
  545. }
  546. return blResult;
  547. }
  548. #endregion
  549. #region 转全角的函数
  550. /// 转全角的函数(SBC case)
  551. ///
  552. ///任意字符串
  553. ///全角字符串
  554. ///
  555. ///全角空格为12288,半角空格为32
  556. ///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
  557. ///
  558. public static String ToSBC(String input)
  559. {
  560. // 半角转全角:
  561. char[] c = input.ToCharArray();
  562. for (int i = 0; i < c.Length; i++)
  563. {
  564. if (c[i] == 32)
  565. {
  566. c[i] = (char)12288;
  567. continue;
  568. }
  569. if (c[i] < 127)
  570. c[i] = (char)(c[i] + 65248);
  571. }
  572. return new String(c);
  573. }
  574. #endregion
  575. #region 转半角的函数
  576. /**/
  577. // /
  578. // / 转半角的函数(DBC case)
  579. // /
  580. // /任意字符串
  581. // /半角字符串
  582. // /
  583. // /全角空格为12288,半角空格为32
  584. // /其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
  585. // /
  586. /// <summary>
  587. /// 转半角的函数
  588. /// </summary>
  589. /// <param name="input"></param>
  590. /// <returns></returns>
  591. public static String ToDBC(String input)
  592. {
  593. char[] c = input.ToCharArray();
  594. for (int i = 0; i < c.Length; i++)
  595. {
  596. if (c[i] == 12288)
  597. {
  598. c[i] = (char)32;
  599. continue;
  600. }
  601. if (c[i] > 65280 && c[i] < 65375)
  602. c[i] = (char)(c[i] - 65248);
  603. }
  604. return new String(c);
  605. }
  606. #endregion
  607. }
  608. }