如下函数我主要想完成该功能:即,输入一个完整IP字符串,如"192.168.2.189"
运行后返回"192.168.2.*"
但是这个函数出错说strIPAddr只读??怎么弄啊,谢谢    private string ConvertIPAddr(string strIP)
    {
        if (strIP == null)
            return "";        string strIPAddr = strIP;
        int nLast = strIP.LastIndexOf('.');
        strIPAddr[++nLast] = '*';   //出错说strIPAddr只读??
        strIPAddr[++nLast] = '\0';
        return strIPAddr;
    }

解决方案 »

  1.   

    正则我不会 ,就不给你写正则了其实字符串也可以操作的string [] strArr = strIp.Split('.');return strArr[0]+"."+strArr[1]+"."+strArr[2].+"*";就可以了 呵呵
      

  2.   

    return strArr[0]+"."+strArr[1]+"."+strArr[2]+".*";错了阿  没有看清楚
      

  3.   

    Regex regex  = ".\\d{1,3}$";
    regex.Replace( "192.168.33.1" , ".*");
      

  4.   

    shilei831115(柔石) :您好啊,试了一下你的方法,出错了:
    Index was outside the bounds of the array.
      

  5.   

    tryprivate string ConvertIPAddr(string strIP)
    {
        return System.Text.RegularExpressions.Regex.Replace(strIP, @"\d+$", "*");
    }
      

  6.   

    lxcnn(过客),试了一下你的方法,虽然不出错了,但是返回仍然是整个IP地址,即最后没有变成星号。所以还是不行啊
      

  7.   

    shilei831115(柔石) :您好啊,试了一下你的方法,出错了:
    Index was outside the bounds of the array.
    说明你输入的 IP地址格式 肯定不对 嘎嘎
      

  8.   

    private string ConvertIPAddr(string strIP)
    {
        return System.Text.RegularExpressions.Regex.Replace(strIP, @"\d+$", "*");
    }下面是循环调用情况:                string strIP = "";
                    for (int i = nStart; i <= nEnd; i++)
                    {
                        strHtml.Append("<tr><td>&nbsp;" + ds.Tables["msgboard"].Rows[i]["date"].ToString() + "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本站网友 ");
                        strHtml.Append("<a href='mailto:" + ds.Tables["msgboard"].Rows[i]["email"].ToString() + "'>" + ds.Tables["msgboard"].Rows[i]["name"].ToString() );
                        strIP = ConvertIPAddr(ds.Tables["msgboard"].Rows[i]["ip"].ToString());
                        strHtml.Append("</a>&nbsp;&nbsp; IP:" + strIP + "</td></tr>");
                        strHtml.Append("<tr><td bgcolor='#444444' height='5'></td></tr>");
                        strHtml.Append("<tr><td style='WORD-WRAP:break-word' bgcolor='#444444'>&nbsp;" + ds.Tables["msgboard"].Rows[i]["ttext"].ToString() + "</td></tr>");
                        strHtml.Append("<tr><td bgcolor='#444444' height='5'></td></tr>");
                    }
      

  9.   

    断点跟踪,看下ds.Tables["msgboard"].Rows[i]["ip"].ToString()它的内容是什么这个方法不会有问题,你可以单独做下测试,比如
    Response.Write(ConvertIPAddr("192.168.2.189"));
      

  10.   

    lxcnn(过客) ,我是在一个网页中调用的,你看为什么不能换成星号呢??
      

  11.   

    估计楼主 大脑晕了, 执行一下 Response.Write(ConvertIPAddr("192.168.2.189"));
    吧,估计你数据库中的数据有问题, 要是都是严格按照IP格式的话,肯定没有错的
      

  12.   

    解决了,呵呵,我根据shilei831115(柔石)的办法改了一下:
        private string ConvertIPAddr(string strIP)
        {
            string[] strArray = strIP.Split('.');
            if( strArray.Length != 4 )
                return "";
            return strArray[0] + "." + strArray[1] + "." + strArray[2] + ".*";    }
      

  13.   

    呵呵,SORRY,说错了啊,肉食兄,不要咬文嚼字哦
    :)谢谢你们了:)
      

  14.   

    string userip=Request.ServerVariables["REMOTE_ADDR"].ToString();
    userip=userip.Substring(0,System.Convert.ToInt32(userip.LastIndexOf(".").ToString())).ToString()+".*";
    Response.Write("<script language=javascript>alert('"+userip+"');</script>");
      

  15.   

    给你说个方法, 先把IP存放到string 变量里,取出最好一个 . 的位置,之后的变为 *string 有这样的操作方法