原: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;
}