/// <summary> /// 分割字符串 空字符串不返回,返回的字符串两端空格被去掉 /// </summary> /// <param name="aList"></param> /// <param name="aSplitStr"></param> /// <returns></returns> public static ArrayList SplitStringToList(string aStr, string aSplitStr) { //此函数只是按第一个字符进行分割 //return aStr.Split(aSplitStr.ToCharArray()); ArrayList result = new ArrayList(); aStr = aStr.Trim(); int index = aStr.IndexOf(aSplitStr); while (index >= 0) { string tmp = I3StringUtil.SubString(aStr, 0, index).Trim(); if (!string.IsNullOrEmpty(tmp)) { result.Add(tmp); } aStr = I3StringUtil.SubString(aStr, index + aSplitStr.Length, aStr.Length - index - aSplitStr.Length).Trim(); index = aStr.IndexOf(aSplitStr); } if (!aStr.Equals(string.Empty)) { result.Add(aStr); } return(result); }
/// <summary> /// 返回首字母为大写的字符串 /// </summary> /// <param name="aStr"></param> /// <returns></returns> public static string ConvertFirstToUpper(string aStr) { string str1 = I3StringUtil.SubString(aStr, 0, 1); string str2 = I3StringUtil.SubString(aStr, 1, aStr.Length - 1); return(str1.ToUpper() + str2); }
/// <summary> /// 由区位码得到汉字 /// </summary> /// <param name="aNum"></param> /// <returns></returns> public static string ConvertNumToChinese(string aNum) { byte[] array = new byte[2]; string str1 = I3StringUtil.SubString(aNum, 0, 2); string str2 = I3StringUtil.SubString(aNum, 2, 2); int front = Convert.ToInt32(str1) + 160; int back = Convert.ToInt32(str2) + 160; array[0] = (byte)front; array[1] = (byte)back; return(Encoding.GetEncoding("GBK").GetString(array)); }
/// <summary> /// 获取子字符串个数 /// 注意,像 ab我我我我我cc 这样的字符串,获取 我我 的个数时,返回2而不是4 /// </summary> /// <param name="aStr"></param> /// <param name="aSub"></param> /// <returns></returns> public static int GetSubCountInString(string aStr, string aSub) { int result = 0; int index = aStr.IndexOf(aSub); while (index >= 0) { result++; aStr = I3StringUtil.SubString(aStr, index + aSub.Length, aStr.Length - index - aSub.Length); index = aStr.IndexOf(aSub); } return(result); }
/// <summary> /// 校验18位身份证号码是否正确 正确返回false 并在信息中写入类似于 湖北,1983-09-13,男 的字符串 /// 错误则返回false,并在信息中写入错误信息 /// </summary> /// <param name="cid"></param> /// <returns></returns> public static bool Check18PersonNO(string cid, out string result) { string[] aCity = new string[] { null, null, null, null, null, null, null, null, null, null, null, "北京", "天津", "河北", "山西", "内蒙古", null, null, null, null, null, "辽宁", "吉林", "黑龙江", null, null, null, null, null, null, null, "上海", "江苏", "浙江", "安微", "福建", "江西", "山东", null, null, null, "河南", "湖北", "湖南", "广东", "广西", "海南", null, null, null, "重庆", "四川", "贵州", "云南", "西藏", null, null, null, null, null, null, "陕西", "甘肃", "青海", "宁夏", "新疆", null, null, null, null, null, "台湾", null, null, null, null, null, null, null, null, null, "香港", "澳门", null, null, null, null, null, null, null, null, "国外" }; double iSum = 0; Regex rg = new System.Text.RegularExpressions.Regex(@"^\d{17}(\d|x)$"); Match mc = rg.Match(cid); if (!mc.Success) { result = ""; return(false); } cid = cid.ToLower(); cid = cid.Replace("x", "a"); if (aCity[int.Parse(I3StringUtil.SubString(cid, 0, 2))] == null) { result = "非法地区"; return(false); } try { DateTime.Parse(I3StringUtil.SubString(cid, 6, 4) + "-" + I3StringUtil.SubString(cid, 10, 2) + "-" + I3StringUtil.SubString(cid, 12, 2)); } catch { result = "非法生日"; return(false); } for (int i = 17; i >= 0; i--) { iSum += (System.Math.Pow(2, i) % 11) * int.Parse(cid[17 - i].ToString(), System.Globalization.NumberStyles.HexNumber); } if (iSum % 11 != 1) { result = "非法证号"; return(false); } result = aCity[int.Parse(I3StringUtil.SubString(cid, 0, 2))] + "," + I3StringUtil.SubString(cid, 6, 4) + "-" + I3StringUtil.SubString(cid, 10, 2) + "-" + I3StringUtil.SubString(cid, 12, 2) + "," + (int.Parse(I3StringUtil.SubString(cid, 16, 1)) % 2 == 1 ? "男" : "女"); return(true); }
/// <summary> /// 从 A1 形式字符串得到行号列号 /// 注意:不支持ZZ以后的列 /// </summary> /// <param name="aReference"></param> /// <param name="rowIndex"></param> /// <param name="columnIndex"></param> public static void GetIndexByReference(string aReference, out int rowIndex, out int columnIndex) { string columnName = I3ReferenceUtil.GetColumnName(aReference); rowIndex = (int)I3ReferenceUtil.GetRowIndex(aReference); int div, mod; if (columnName.Length == 1) { div = 0; } else { div = I3MathUtil.Asc(I3StringUtil.SubString(columnName, 0, 1)) - 64; } mod = I3MathUtil.Asc(I3StringUtil.SubString(columnName, columnName.Length - 1, 1)) - 64; columnIndex = div * 26 + mod; }
/// <summary> /// 将金钱转换为大写人民币 /// </summary> /// <param name="num"></param> /// <returns></returns> public static string ConvertMoneyToUpper(decimal num) { string str1 = "零壹贰叁肆伍陆柒捌玖"; //0-9所对应的汉字 string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字 string str3 = ""; //从原num值中取出的值 string str4 = ""; //数字的字符串形式 string str5 = ""; //人民币大写金额形式 int i; //循环变量 int j; //num的值乘以100的字符串长度 string ch1 = ""; //数字的汉语读法 string ch2 = ""; //数字位的汉字读法 int nzero = 0; //用来计算连续的零值是几个 int temp; //从原num值中取出的值 num = Math.Round(Math.Abs(num), 2); //将num取绝对值并四舍五入取2位小数 str4 = ((long)(num * 100)).ToString(); //将num乘100并转换成字符串形式 j = str4.Length; //找出最高位 if (j > 15) { return("溢出"); } str2 = I3StringUtil.SubString(str2, 15 - j); //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分 //循环取出每一位需要转换的值 for (i = 0; i < j; i++) { str3 = I3StringUtil.SubString(str4, i, 1); //取出需转换的某一位的值 temp = Convert.ToInt32(str3); //转换为数字 #region 当所取位数不为元、万、亿、万亿上的数字时 if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15)) { if (str3 == "0") { ch1 = ""; ch2 = ""; nzero = nzero + 1; } else { if (str3 != "0" && nzero != 0) { ch1 = "零" + I3StringUtil.SubString(str1, temp * 1, 1); ch2 = I3StringUtil.SubString(str2, i, 1); nzero = 0; } else { ch1 = I3StringUtil.SubString(str1, temp * 1, 1); ch2 = I3StringUtil.SubString(str2, i, 1); nzero = 0; } } } #endregion #region 该位是万亿,亿,万,元位等关键位 else { if (str3 != "0" && nzero != 0) { ch1 = "零" + I3StringUtil.SubString(str1, temp * 1, 1); ch2 = I3StringUtil.SubString(str2, i, 1); nzero = 0; } else { if (str3 != "0" && nzero == 0) { ch1 = I3StringUtil.SubString(str1, temp * 1, 1); ch2 = I3StringUtil.SubString(str2, i, 1); nzero = 0; } else { if (str3 == "0" && nzero >= 3) { ch1 = ""; ch2 = ""; nzero = nzero + 1; } else { if (j >= 11) { ch1 = ""; nzero = nzero + 1; } else { ch1 = ""; ch2 = I3StringUtil.SubString(str2, i, 1); nzero = nzero + 1; } } } } } #endregion if (i == (j - 11) || i == (j - 3)) { //如果该位是亿位或元位,则必须写上 ch2 = I3StringUtil.SubString(str2, i, 1); } str5 = str5 + ch1 + ch2; if (i == j - 1 && str3 == "0") { //最后一位(分)为0时,加上“整” str5 = str5 + '整'; } } if (num == 0) { str5 = "零元整"; } return(str5); }