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

解决方案 »

  1.   

    string regStr="(\d+)-(\d+)"
    return( Regex.Replace(s,regStr,new MatchEvaluator(replaceFen),RegexOptions.Multiline) );
    提取出里面的$1 和$2 然后再在replaceFen里面进行判断和替换操作,这样简单
      

  2.   

    应该是string regStr="(\\d+)\\-(\\d+)";没注意
      

  3.   

    <%@import namespace="System.Text.RegularExpressions" %>
    <Script runat="server" Language="c#">
    string replaceFen(Match m){ string s="";
    long l1=long.Parse(m.Result("$1")),l2=long.Parse(m.Result("$2"));
    if(l1==l2) return(l1+"");
    else if(l1<l2) for(long i=l1;i<=l2;i++){
    if(s!="") s+=",";s+=i;
    }else for(long i=l1;i>=l2;i--){
    if(s!="") s+=",";s+=i;
    }
    return(s);
    }
    </Script>
    <%
    string s="12-14,16,18,19-21,99-60";
    string regStr="([\\d]+)-([\\d]+)";
    s=Regex.Replace(s,regStr,new MatchEvaluator(replaceFen),RegexOptions.Multiline);
    Response.Write( s );
    %>
    是-,号还是-,(中文字符)?
    不知你现在可否明白?