Intervalo separado de números, se em seqüência, em seguida, por hífen e se quebra em seqüência ocorre, em seguida, caractere de vírgula
Eu tenho uma string denotando as páginas como1,2,3,4,8,9,10,15
.
Eu quero que isso seja mostrado como1-4,8-10,15
isto é, os números em sequência são separados por hífen delimitado pelo menor e maior número em sequência.
Se quebrar em seqüência, o intervalo deve ser separado por vírgula.
string pageNos = "5,6,7,9,10,11,12,15,16";
string result=string.Empty;
string[] arr1 = pageNos.Split(',');
int[] arr = new int[arr1.Length];
for (int x = 0; x < arr1.Length; x++) // Convert string array to integer array
{
arr[x] = Convert.ToInt32(arr1[x].ToString());
}
for (int i = 0; i < arr.Length;i++)
{
for (int j = i + 1; ; j++)
if (arr[i] == (arr[j] - 1))
result += arr[i].ToString() + "-" + arr[j].ToString();
else
result += arr[i].ToString() + ",";
}
Console.WriteLine(result);