相关疑难解决方法(0)

将列表转换为数字范围字符串

这个问题几乎与这个问题相反: C#是否内置支持解析页码字符串?

所以给定

1,3,5,6,7,8,9,10,12:
Run Code Online (Sandbox Code Playgroud)

我会输出:

1,3,5-10,12
Run Code Online (Sandbox Code Playgroud)

这是我的第一次尝试.它看起来有点像hacky,可能是我写过的最糟糕的代码.你能提出一个改进的方法吗?更好的办法吗?

static string numListToRangeStr(List<int> numList)
{
    StringBuilder retString = new StringBuilder();
    numList.Sort();

    bool inRangeFind = false;
    int firstInRange = numList[0];
    int lastNumber = firstInRange;
    bool first = true;

    for (int i = 1; i < numList.Count; i++)
    {
        if (numList[i] == (lastNumber + 1))
        {
            inRangeFind = true;
        }
        else
        {             
            if (inRangeFind)
            {
                if (!first)
                {
                    retString.Append(",");
                }
                retString.Append(firstInRange);
                retString.Append("-");
            }
            else
            {
               if (!first)
                {
                    retString.Append(",");
                }
            }

            retString.Append(lastNumber);

            firstInRange = numList[i]; …
Run Code Online (Sandbox Code Playgroud)

c# string parsing

13
推荐指数
3
解决办法
4304
查看次数

标签 统计

c# ×1

parsing ×1

string ×1