用C#写出:对字符串csdn = "1,8,6,23,223,56,78,9-15";进行排序,并且不对9-15进行展开
时间: 2023-08-28 22:05:12 浏览: 35
如果不想对9-15这样的范围进行展开,可以使用一个标记来记录这个范围,然后在排序时进行特殊处理。具体实现如下:
```csharp
string csdn = "1,8,6,23,223,56,78,9-15";
string[] csdnArray = csdn.Split(',');
List<int> csdnList = new List<int>();
bool hasRange = false;
foreach (string s in csdnArray)
{
if (s.Contains("-"))
{
if (s == "9-15")
{
hasRange = true;
csdnList.Add(-1);
}
else
{
string[] range = s.Split('-');
int start = int.Parse(range[0]);
int end = int.Parse(range[1]);
for (int i = start; i <= end; i++)
{
csdnList.Add(i);
}
}
}
else
{
csdnList.Add(int.Parse(s));
}
}
csdnList.Sort();
if (hasRange)
{
csdnList.Remove(-1);
csdnList.InsertRange(csdnList.FindIndex(x => x > 9), Enumerable.Range(9, 7));
}
csdn = string.Join(",", csdnList);
Console.WriteLine(csdn);
```
这里使用了一个 `bool` 类型的变量 `hasRange` 来标记是否存在需要特殊处理的范围。如果存在这样的范围(即9-15),则将一个特殊的标记(这里使用了-1)添加到 `List<int>` 中,表示这个范围的位置。在排序时,如果存在这个标记,则将其移除并将9到15这些数字插入到标记的位置上。
这样就能够实现对字符串进行排序,同时不对9-15这样的范围进行展开的效果。