Trennen Sie den Zahlenbereich, wenn nacheinander, dann durch einen Bindestrich, und wenn nacheinander unterbrochen wird, dann durch ein Komma
Ich habe eine Zeichenfolge, die die Seitennummern angibt1,2,3,4,8,9,10,15
.
Ich möchte, dass dies als angezeigt wird1-4,8-10,15
Das heißt, die Zahlen der Reihe nach werden durch einen Bindestrich getrennt, der von der kleinsten und der größten Zahl der Reihe nach eingeschlossen ist.
Bei Unterbrechung der Reihenfolge ist der Bereich durch Komma zu trennen.
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);