怎样把12-14,16,18,19-21 转换成12,13,14,16,18,19,20,21?

解决方案 »

  1.   

    如果是js:
    字符.replace(/-/g,",");
      

  2.   

    cs的话:
    using System.Text.RegularExpressions;
    string str = "";
    str = Regex.Replace(str,@"[-]",",");
      

  3.   

    string aaa = "12-14,16,18,19-21";
    aaa = aaa.Replace("-","");//注意,后面的两个""中间没有任何东西,嘿嘿~~
      

  4.   

    public string SplitNum(string strNum)
        {
            
            string strResult = string.Empty;        string[] strTmp = strNum.Split("-".ToCharArray());
            if (strTmp.Length == 1)
                strResult = strNum + ",";
            else
            {
                for (int i = Convert.ToInt32(strTmp[0]); i <= Convert.ToInt32(strTmp[1]); i++)
                {
                    strResult += i.ToString() + ",";
                }
            }
            return strResult;
            
        }
    调用: SplitNum("13-16") 返回 13,14,15,16,
     SplitNum("13") 返回13
      

  5.   

    不太会正则,不知道能不能实现,最笨的方法就是用SPLIT分开,然后判断范围,循环增加进去
      

  6.   

    private string getnum(string input)
            {
                if(input.IndexOf('-') < 0)
                    return input;
                string[] firststep = input.Split('-');
                int start,end;
                string result = firststep[0], tempstr;
                for (int i = 1; i < firststep.Length; i++)
                {
                    string[] s;
                    if (firststep[i - 1].IndexOf(',') > 0)
                    {
                        s = firststep[i - 1].Split(',');
                        start = Convert.ToInt32(s[s.Length - 1]);
                    }
                    else
                    {
                        start = Convert.ToInt32(firststep[i - 1]);
                    }                if (firststep[i].IndexOf(',') > 0)
                    {
                        s = firststep[i].Split(',');
                        end = Convert.ToInt32(s[0]);
                        tempstr = firststep[i].Remove(0, s[0].Length);
                    }
                    else
                    {
                        end = Convert.ToInt32(firststep[i]);
                        tempstr = "";
                    }
                    
                    for (++start; start <= end; start++)
                    {
                        result += "," + start.ToString();
                    }
                    result += tempstr;
                }
                return result;
            }
    笨方法
    getnum("1,2,3-4,5,6")返回"1,2,3,4,5,6"
    期待好的方法!