原:1,2,3,5,6,7,9,10,12
转后:1~3,5~7,9~10,12
/// <summary> /// 字符串号换为区间式 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string ToInterval(string str) { int[] arraystr = TointArray(str.Trim(',').Split(',')); Array.Sort(arraystr); string Rstr = "", z = ""; z = arraystr[arraystr.Length - 1].ToString(); for (int i = 1; i < arraystr.Length; i++) { if (arraystr[i] - arraystr[i - 1] != 1) { Rstr += arraystr[i - 1] + ","; } else if (string.IsNullOrEmpty(Rstr) || Rstr.Substring(Rstr.Length - 1, 1) != "~") { Rstr += arraystr[i - 1] + "~"; } } return (Rstr + z).Trim(','); } public static int[] TointArray(string[] str) { int[] ccc = new int[str.Length]; for (int i = 0; i < str.Length; i++)//将全部的数字存到数组里。 { ccc[i] = Convert.ToInt32(str[i].ToString()); } return ccc; }